公开以文件为主的 Stream,既支持同步读写操作,也支持异步读写操作。
1)读取
/* * File类最大的问题是,一次性读取,如果文件较大的话,会给内存造成很大压力。 * 文件流:把一个较大的文件,可以分成一点一点的读取和写入,内存压力很小。 * 三种文件流类:FileStream:操作字节(byte),可读可写,可以操作任何文件。 * StreamReader+StreamWriter:操作字符,操作文本文件。 */ //1、创建文件流对象 string path=@"D:\CSharp_Net\课件\相约未知地带.txt"; FileStream fsRead = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Read); //2、创建一个读取缓冲区,可以保存3MB的数据 byte[] buffer=new byte[1024*1024*3]; //3、读取数据,返回值表示的是每次读取到的实际字节数 int r = fsRead.Read(buffer, 0, buffer.Length); //4、把读取到的字节型数据,解析成字符串 string s = Encoding.Default.GetString(buffer,0,r); //5、GC有一些资源是无法去回收的,FileStream就是其中的一种 //所以,需要手动将FileStream对象所占的资源释放掉 fsRead.Close();//关闭对象 fsRead.Dispose();//释放资源 Console.WriteLine(s); Console.ReadKey();
2)写入
string path = @"D:\CSharp_Net\课件\Test.txt"; //将实现了IDisposable接口的类的对象放进using里面, //结束using过程后,会自动调用Dispose方法来释放对象所占的资源 //创建写入对象 using(FileStream fsWrite=new FileStream(path,FileMode.OpenOrCreate,FileAccess.Write)) { //写入的内容 string s="谭科,我好想你啊。"; //将要写入的内容解析成字节数组 byte[] buffer = Encoding.Default.GetBytes(s); //将字节数组内容写入文件 fsWrite.Write(buffer, 0, buffer.Length); } Console.WriteLine("写入成功"); Console.ReadKey();
时间: 2024-10-08 20:04:32