FileStream 的读写都在这儿啦
Posted helloiwen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FileStream 的读写都在这儿啦相关的知识,希望对你有一定的参考价值。
转https://blog.csdn.net/liyuqian199695/article/details/70135584 FileStream读写文件
打个比方,File类可以看成一艘轮船可以把我们的货物全部装上,然后运输到河的对岸。
FileStream类型就可以看成公路上的小货车,假如要把我们的货全部送到目的地,可能需要返回来装很多次。
那么问题很明显,FileStream是把数据拆分成很多小份,慢慢的去运输。回到我们的问题,FileStream每次运输的小份数据会马上完工,使用方可以马上从缓存池拿出来用,
File由于量比较大,运输需要时间,使用方只有等待。并且最重要的是,FileStream只需要开小内存存放文本里的数据就可以,而File需要开对应文本那样大的内存去缓存文本内容。
并且FileStream提供了异步读取操作,就是我们在读取的时候还是可以做其他的事,不至于让我们一直在读取文本,不能点击查看UI.
//写文本数据代码
FileStream fs = new FileStream(_Path1, FileMode.Create);
string strWord = "插入的文本";
//字符串转成byte数组
byte[] byteArray = Encoding.UTF8.GetBytes(strWord);
fs.Write(byteArray, 0,byteArray.Length);
fs.Close();
//定义文件流
FileStream fs = new FileStream(_Path1, FileMode.Open);
//开辟内存区域 缓存读出来的文本数据 用于将来显示在控制台里
byte[] byteArray = new byte[1024 * 1024]; //1M空间
//开始读取数据 0表示从缓存内存的第一个字节开始
//count 是我们真正读取到的字节数量 比如我们在文件结尾,可能没有1M的数据给我们读
//这个方法刚好返回的是我们从文本中读取的字节数量
int count = fs.Read(byteArray, 0, byteArray.Length);
//开始转码 二进制我们是无法看的 我们需要转成字符串形式
string str = Encoding.UTF8.GetString(byteArray, 0, count);
//读取文本操作完成后。我们需要释放一切关于文件流操作申请的计算机资源,不释放的话,操作系统 是不会主动回收的。我们需要自己去释放
fs.Close();
Console.WriteLine(str);
以上是关于FileStream 的读写都在这儿啦的主要内容,如果未能解决你的问题,请参考以下文章
File.Copy 与手动 FileStream.Write 用于复制文件
C#(099):文件读写利用File静态类 System.IO.FileInfoDirectoryInfoDriveInfo