亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> C语言

C# 文件 I/O 完全指南:流、读写操作与文件系统管理

文件是存储在磁盘上具有特定名称和目录路径的数据集合。打开文件进行读写时,它成为流。流本质是通过通信路径传递的字节序列。两大主流:输入流(读操作)和输出流(写操作)。

C# I/O 核心类

System.IO 命名空间提供文件操作类:创建/删除文件、读写、关闭等。

序号类及说明
1BinaryReader:从二进制流读取基元数据
2BinaryWriter:以二进制格式写入基元数据
3BufferedStream:字节流临时存储
4Directory:操作目录结构(静态方法)
5DirectoryInfo:目录操作(实例方法)
6DriveInfo:驱动器信息
7File:文件操作(静态方法)
8FileInfo:文件操作(实例方法)
9FileStream:读写文件任意位置
10MemoryStream:内存中随机访问流数据
11Path:路径信息操作
12StreamReader:从字节流读取字符
13StreamWriter:向流写入字符
14StringReader:从字符串缓冲区读取
15StringWriter:写入字符串缓冲区

FileStream 类

FileStream 继承自抽象类 Stream,支持读、写、关闭文件。创建语法:

FileStream <object_name> = new FileStream(
    <file_name>, 
    <FileMode Enumerator>, 
    <FileAccess Enumerator>, 
    <FileShare Enumerator>);

示例

FileStream F = new FileStream("sample.txt", FileMode.Open, FileAccess.Read, FileShare.Read);

FileMode 枚举成员

成员说明
Append打开现有文件定位到末尾,或创建新文件
Create创建新文件(覆盖已存在)
CreateNew指示 OS 创建新文件(已存在则异常)
Open打开现有文件(不存在则异常)
OpenOrCreate存在则打开,不存在则创建
Truncate打开现有文件并截断为零字节

FileAccess 枚举

Read、ReadWrite、Write

FileShare 枚举

成员说明
Inheritable允许文件句柄继承给子进程
None拒绝共享当前文件
Read允许打开文件读取
ReadWrite允许打开文件读写
Write允许打开文件写入

FileStream 完整示例

using System;
using System.IO;
namespace FileIOApplication {
    class Program {
        static void Main(string[] args) {
            FileStream F = new FileStream("test.dat", FileMode.OpenOrCreate, FileAccess.ReadWrite);
            for (int i = 1; i <= 20; i++) F.WriteByte((byte)i);
            F.Position = 0;
            for (int i = 0; i <= 20; i++) Console.Write(F.ReadByte() + " ");
            F.Close();
            Console.ReadKey();
        }
    }
}

输出:1 2 3 ... 20 -1(-1 表示流结束)

高级文件操作

序号主题及说明
1文本文件读写:StreamReader / StreamWriter 处理编码文本
2二进制文件读写:BinaryReader / BinaryWriter 处理基元类型
3Windows 文件系统操作:浏览定位文件和目录

文本文件读写示例


// 写入
using (StreamWriter sw = new StreamWriter("test.txt", false, Encoding.UTF8)) {
    sw.WriteLine("Hello World");
    sw.WriteLine("Line 2");
}

// 读取
using (StreamReader sr = new StreamReader("test.txt", Encoding.UTF8)) {
    string line;
    while ((line = sr.ReadLine()) != null) Console.WriteLine(line);
}

二进制文件读写示例


// 写入
using (BinaryWriter bw = new BinaryWriter(File.Open("data.bin", FileMode.Create))) {
    bw.Write(123);
    bw.Write("Hello");
    bw.Write(3.14);
}

// 读取
using (BinaryReader br = new BinaryReader(File.Open("data.bin", FileMode.Open))) {
    int i = br.ReadInt32();
    string s = br.ReadString();
    double d = br.ReadDouble();
}

目录与文件操作


// 目录操作
Directory.CreateDirectory(@"C:\Temp\SubDir");
string[] dirs = Directory.GetDirectories(@"C:\Temp");
string[] files = Directory.GetFiles(@"C:\Temp", "*.txt");
Directory.Delete(@"C:\Temp\SubDir", true);  // 递归删除

// 文件操作
File.Copy("source.txt", "dest.txt", true);  // 覆盖
File.Move("old.txt", "new.txt");
File.Delete("temp.txt");
FileInfo fi = new FileInfo("test.txt");
Console.WriteLine($"Size: {fi.Length}, Created: {fi.CreationTime}");

异步文件操作

.NET 4.5+ 支持异步 I/O,避免阻塞 UI 线程:

// 异步写入
await File.WriteAllTextAsync("async.txt", "Content");

// 异步读取
string content = await File.ReadAllTextAsync("async.txt");

// 流式异步
using (FileStream fs = new FileStream("big.dat", FileMode.Open, FileAccess.Read, FileShare.Read, 4096, true)) {
    byte[] buffer = new byte[8192];
    int read = await fs.ReadAsync(buffer, 0, buffer.Length);
}

最佳实践

C语言

  1. 钛:关键性能、应用领域与工业用途全解析
  2. 响板:历史、工艺与演奏
  3. 胶水的历史、生产与未来:从古老粘合剂到现代创新
  4. 缝纫线:类型、历史、生产与质量控制
  5. 锡:从青铜时代到现代工业——用途、生产与未来
  6. 锉刀精通指南:金属与木工精密修整的工具选择与技法
  7. C 语言输入输出(I/O)精通:scanf() 与 printf() 详解
  8. C语言文件处理完全指南:fopen、fprintf、fread 与 fseek
  9. C 语言文件 I/O 实战:创建、打开、读写与二进制操作
  10. C 语言头文件详解:类型、用法与最佳实践
  11. Python 文件 I/O:掌握文件操作、读写与管理
  12. Python 文件 I/O:掌握输入输出操作