C# 文件流读写方法汇总
一、官方文档:
文件和流I/O(输入/输出):
https://docs.microsoft.com/zh-cn/dotnet/standard/io/
文件流 FileStream
https://docs.microsoft.com/zh-cn/dotnet/api/system.io.filestream?view=net-5.0
文件流FileStream 官方案例:
https://docs.microsoft.com/zh-cn/dotnet/standard/io/how-to-read-and-write-to-a-newly-created-data-file
二、案例
案例一:https://www.cnblogs.com/akwwl/p/3240813.html
C#读写txt文件的两种方法介绍
1.添加命名空间
System.IO;
System.Text;
2.文件的读取
(1).使用FileStream类进行文件的读取,并将它转换成char数组,然后输出。
byte[] byData = new byte[100]; char[] charData = new char[1000]; public void Read() { try { FileStream file = new FileStream("E:\\test.txt", FileMode.Open); file.Seek(0, SeekOrigin.Begin); file.Read(byData, 0, 100); //byData传进来的字节数组,用以接受FileStream对象中的数据,第2个参数是字节数组中开始写入数据的位置,它通常是0,表示从数组的开端文件中向数组写数据,最后一个参数规定从文件读多少字符. Decoder d = Encoding.Default.GetDecoder(); d.GetChars(byData, 0, byData.Length, charData, 0); Console.WriteLine(charData); file.Close(); } catch (IOException e) { Console.WriteLine(e.ToString()); } }
(2).使用StreamReader读取文件,然后一行一行的输出。
public void Read(string path) { StreamReader sr = new StreamReader(path,Encoding.Default); String line; while ((line = sr.ReadLine()) != null) { Console.WriteLine(line.ToString()); } }
3.文件的写入
(1).使用FileStream类创建文件,然后将数据写入到文件里。
public void Write() { FileStream fs = new FileStream("E:\\ak.txt", FileMode.Create); //获得字节数组 byte[] data = System.Text.Encoding.Default.GetBytes("Hello World!"); //开始写入 fs.Write(data, 0, data.Length); //清空缓冲区、关闭流 fs.Flush(); fs.Close(); }
(2).使用FileStream类创建文件,使用StreamWriter类,将数据写入到文件。
public void Write(string path) { FileStream fs = new FileStream(path, FileMode.Create); StreamWriter sw = new StreamWriter(fs); //开始写入 sw.Write("Hello World!!!!"); //清空缓冲区 sw.Flush(); //关闭流 sw.Close(); fs.Close(); }
以上就完成了,txt文本文档的数据读取与写入。
案例二:https://www.cnblogs.com/zoujinhua/p/11325062.html
C#文件流的读写
1.文件流写入的一般步骤
1.定义一个写文件流
2.定义一个要写入的字符串
3.完成字符串转byte数组
4.把字节数组写入指定路径的文件
5.关闭文件流
2.文件流读入的一般步骤
1.定义一个读文件流
2.开辟一块足够大的字节数组内存空间
3.把指定文件的内容读入字节数组
4.完成字节数组转字符串操作
5.关闭文件流
具体代码如下:
1 using System; 2 using System.IO; 3 using System.Text; 4 namespace LearnFileStream 5 { 6 class Program 7 { 8 string path = @"E:\AdvanceCSharpProject\LearnCSharp\LearnFileStream.txt"; 9 10 private void TestWrite() 11 { 12 //定义写文件流 13 FileStream fsw = new FileStream(path, FileMode.OpenOrCreate); 14 //写入的内容 15 string inputStr = "Learn Advanced C Sharp"; 16 //字符串转byte[] 17 byte[] writeBytes = Encoding.UTF8.GetBytes(inputStr); 18 //写入 19 fsw.Write(writeBytes, 0, writeBytes.Length); 20 //关闭文件流 21 fsw.Close(); 22 } 23 24 private void TestRead() 25 { 26 //定义读文件流 27 FileStream fsr = new FileStream(path, FileMode.Open); 28 //开辟内存区域 1024 * 1024 bytes 29 byte[] readBytes = new byte[1024 * 1024]; 30 //开始读数据 31 int count = fsr.Read(readBytes, 0, readBytes.Length); 32 //byte[]转字符串 33 string readStr = Encoding.UTF8.GetString(readBytes, 0, count); 34 //关闭文件流 35 fsr.Close(); 36 //显示文件内容 37 Console.WriteLine(readStr); 38 } 39 static void Main(string[] args) 40 { 41 new Program().TestWrite(); 42 new Program().TestRead(); 43 } 44 } 45 }
1、FileStream 继承自 Stream。
Stream 表示“流”(这个bai概念在计算机中非常常见,题主可以自行搜索相关资料),本质上是一种字节序列。说穿了,计算机只认识0和1,那么这么丰富多彩的文本、音乐、视频,归根结底都是转换成字节存储在内存与硬盘中的。
Stream 对象有一个属性 Length,表示这个流的长度;还有一个属性 Position,表示这个流当前的位置。
Stream.Read(byte[] array, int offset, int count);
array 表示缓冲区;offset 表示从流的当前位置(也就上面说的 Position)偏移多少个字节开始读;count 表示读取多少个字节。该方法返回的是实际上读取了多少个字节(永远小于等于 count),如果该值等于 0,说明已经到流的末尾了。读取之后,这个流的 Position 就会发生变化。
为什么要缓冲区?因为一个流很可能非常大,一次性的加载是不现实的,所以需要分块来读取,存储每个分块的这个字节数组就叫做“缓冲区”。
2、底层调用的是 kernel32.dll 中的 Windows API 方法 ReadFile()
C# 向文件末尾追加数据
FileStream outputStream = null;
outputStream = new FileStream(path, FileMode.Append);//Append决定outputStream.Write写入时,是从头开始覆盖,还是从末尾追加。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具