学习一下在 C# 中如何使用 FileStream 读写文件,FileStream 为文件提供流操作,同时支持同步和异步读写操作。Stream 是从源到目的地的数据流。源或目的地可以是磁盘、内存、套接字或其他程序。
var dataFilePath = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, "Files")); // 堆代码 duidaima.com using var fileStream = File.OpenWrite(Path.Combine(dataFilePath, "data.txt")); byte[] dataBytes = Encoding.UTF8.GetBytes("hello world"); fileStream.Write(dataBytes, 0, dataBytes.Length); Console.WriteLine("OK");
File.OpenWrite 方法以写入模式打开 FileStream,把字符串转换为字节,最后使用 Write 将字节写入 FileStream。
var dataFilePath = @"C:\Users\29963\Desktop\data\data.txt"; using var fileStream = File.Create(dataFilePath); using var fileWriter = new StreamWriter(fileStream); fileWriter.WriteLine("hello world"); Console.WriteLine("OK");
使用 StreamWriter 不需要操作字节,直接调用 WriteLine 方法将字符串数据写入到文件。
var dataFilePath = @"C:\Users\29963\Desktop\data\data.txt"; using var fileStream = File.OpenRead(dataFilePath); byte[] buffer = new byte[1024]; int c; while ((c = fileStream.Read(buffer, 0, buffer.Length)) > 0) { Console.WriteLine(Encoding.UTF8.GetString(buffer, 0, c)); } Console.WriteLine("OK");
使用 File.OpenRead 打开一个文件进行读取。该方法返回一个 FileStream,以字节形式读取数据,使用 UTF8 编码将它们转换为字符串,最后将字符串写入控制台。注意:Read 方法中第二个参数并不是指从流中哪个位置读取,而是 buffer 数组中开始读写的索引位置。
var dataFilePath = @"C:\Users\29963\Desktop\data\data.txt"; using var fileStream = File.OpenRead(dataFilePath); using var fileReader = new StreamReader(fileStream); var line = string.Empty; while ((line = fileReader.ReadLine()) != null) { Console.WriteLine(line); } Console.WriteLine("OK");
使用 StreamReader 的 WriteLine 方法读取数据。它返回输入流的下一行,如果到达输入流的末尾,则返回 null。
var fileName = "data1.txt"; using var fs = new FileStream(fileName, FileMode.Open); var fileName2 = "words_copy.txt"; using var fs2 = new FileStream(fileName2, FileMode.OpenOrCreate); fs.CopyTo(fs2); Console.WriteLine("OK");总结