C# 简单的文件流操作

文件是任何应用程序开发时必不可少的操作,.NET框架提供的文件操作基本都位于 System.IO 命名空间之下

我们就可以在该命名空间下通过相应的类进行文件、目录以及数据流的操作

C# I/O 类

  • File 类:提供用于创建、复制、删除、移动和打开文件的静态方法

  • FileInfo 类:提供创建、复制、删除、移动和打开文件夹的属性和实例方法

  • FileStream 类:主要用于读取磁盘上的文件或者向磁盘文件写入信息

  • Path 类:主要是用来操作文件路径

  • MemoryStream 类:主要用于操作内存中的数据

  • BufferedStream 类:主要也是用来处理流数据的,但是该类主要的功能是用来封装其他流类

  • NetworkStream 类:主要是专门用来处理服务器与客户端通信的流数据

  • StreamReader/StreamWriter 类:主要用来处理流数据,它们分别提供了高效的文本流读取/写入功能

  • Stream 类,TextReader 类,TextWrite 类,BinaryReader 类,BinaryWrite 类都继承了 IDisposable 接口,所以使用后必须关闭流

File 和 FileInfo 类

这两个类用来操作硬盘上的文件:

File 类主要通过静态方法实现;而 FileInfo 类则是通过实例方法实现的

成员 说明
AppendText 创建一个 StreamWrite 类型,用于追加文本
Create 指定文件下创建或者覆盖文件
Delete 删除指定文件
Exists 检查文件是否存在
Open 指定特有的读取权限打开文件
OpenRead 以读取的方式打开现有文件
OpenWrite 打开或者创建一个现有文件,以写入文本
ReadAllText 读取文件的所有行,然后关闭文件
WriteAllText 写入指定的字符串,然后关闭文件

FileInfo 类的实例成员提供了和 File 类差不多的功能,在大多数情况下它们可以互换进行使用

但由于 File 类提供的方法都是静态方法,使用的频率较高

🙌🌰:

 1         static void Main(string[] args)
 2         {
 3             FileStream file;
 4             StreamWriter writer;
 5             // 文件路径
 6             string path = "Test.txt";
 7             // 判断文件是否存在
 8             if (!File.Exists(path))
 9             {
10                 // 创建指定文件
11                 file = File.Create(path);
12                 Console.WriteLine("新建一个文件:{0}", path);
13             }
14             else
15             {
16                 // 打开指定文件
17                 file = File.Open(path, FileMode.Open);
18                 Console.WriteLine("该文件已存在,直接打开文件");
19             }
20             // 写入新的文本数据
21             writer = new StreamWriter(file);
22             writer.WriteLine("新增加的测试文本");
23             // 清除缓冲区并关闭对象
24             writer.Flush();
25             writer.Close();
26             // 关闭当前数据流
27             file.Close();
28             Console.ReadKey();
29         }

 Directory 和 DirectoryInfo 类

这两个类都包含了用来创建、移动、删除和枚举所有目录或者子目录的成员

成员 说明
CreateDirectory 在指定路径下创建目录和子目录
Delete 删除指定目录
Exists 检查目录是否存在
GetFiles 获得目录下所有文件名称的数组
GetParent 获得指定目录的父目录
GetCurrentDirectory 获取应用程序当前的工作目录
Move 移动目录

DirectoryInfo 类的功能同样与 Directory 类似,所以大多数情况下两者可以互换进行使用

🙌🌰:

 1         static void Main(string[] args)
 2         {
 3             // 获取当前目录路径
 4             string dirPath = Directory.GetCurrentDirectory();
 5             Console.WriteLine("当前路径:" + dirPath);
 6             // 新文件路径
 7             string filePath = string.Format("{0}/{1}", dirPath, "Test.txt");
 8             // 判断路径文件是否存在
 9             if (!Directory.Exists(dirPath))
10             {
11                 // 创建指定目录
12                 Directory.CreateDirectory(dirPath);
13                 Console.WriteLine("创建一个新的目录{0}", dirPath);
14             }
15             else
16                 Console.WriteLine("目录{0}已存在", dirPath);
17             // 创建文件实例
18             FileInfo file = new FileInfo(filePath);
19             // 判断文件是否存在
20             if (!file.Exists)
21             {
22                 // 创建指定文件
23                 file.Create();
24                 Console.WriteLine("创建一个新的文件");
25             }
26             else
27                 Console.WriteLine("该文件已存在");
28             // 获取路径下所有文件(包括路径)
29             string[] files = Directory.GetFiles(dirPath, "*", SearchOption.AllDirectories);
30             Console.WriteLine("目录{0}下共{1}个文件", dirPath, files.Length);
31             // 显示所有文件名称
32             for (int i = 0; i < files.Length; i++)
33             {
34                 DirectoryInfo fileInfo = new DirectoryInfo(files[i]);
35                 Console.WriteLine(fileInfo.Name);
36             }
37             Console.ReadKey();
38         }

流: Stream 类

流可以理解为内存中的字节序列,而 Stream 是所有流的抽象基类,每个具体的存储实体都可以通过 Stream 派生类来实现

同样的,流也涉及三个基本操作:

  • 对流进行读取:将流中的数据读取到具体的数据结构中

  • 对流进行写入:把数据结构中的数据写入到流中

  • 对流进行查找:对流内当前位置进行查询和修改

成员 说明
CanRead 检查当前流是否支持读取操作
CanSeek 检查当前流是否支持查找操作
CanWrite 检查当前流是否支持写入操作
Length 获取用字节表示的流的长度
Position 设置当前流中的位置
BeginRead 开始异步读操作
BeginWrite 开始异步写操作
Close 关闭当前流并且释放资源
EndRead 等待异步读操作完成
EndWrite 等待异步写操作完成
Flush 清除当前流的缓冲区,并且将数据写入存储设备
Write 向当前流写入字节序列

 🙌🌰:

 1         static void Main(string[] args)
 2         {
 3             // 文件路径
 4             string filePath = "Test.txt";
 5             // 创建或打开指定文件
 6             using (FileStream fileStream = File.Open(filePath, FileMode.OpenOrCreate))
 7             {
 8                 // 字符串数据
 9                 string msg = "Hello World!";
10                 // 写入数据
11                 StreamWriter streamWrite = new StreamWriter(fileStream);
12                 Console.WriteLine("开始写入数据");
13                 streamWrite.Write(msg);
14                 // 读取数据
15                 Console.WriteLine("写入的数据为:");
16                 StreamReader streamReader = new StreamReader(fileStream);
17                 string str = streamReader.ReadToEnd();
18                 Console.WriteLine(str);
19                 // 关闭当前流
20                 streamWrite.Close();
21                 streamReader.Close();
22             }
23             Console.ReadKey();
24         }

详细的文件操作

文件操作包括但不限于文件的创建、删除、移动、复制和查询等操作

详细的文件操作可以参考 ☛ 相应的博文内容

 

 

 

 

 

*** |  以上内容仅为学习参考、学习笔记使用  | ***

posted @ 2021-10-22 16:42  Mr.Cat~  阅读(1646)  评论(0编辑  收藏  举报