1、文件流的Flush、Close、Dispose。缓冲区。
Flush(); //强制把缓冲区中的数据写入文件。
Close(); //会把没有写入缓冲区的数据写入文件(Flush)再关闭。
Dispose方法会调用 Close,所以以后用 Stream 的时候用 using 最保险。
2、更方便的用法:File.OpenRead,File.OpenWrite,内部还是new。代码示例:
//FileStream fs = File.OpenRead(@"c:\1.txt"); //不用new而已
FileStream fs = File.OpenWrite(@"c:\1.txt"); //不用new而已
// FileStream fs = new FileStream(@"c:\1.txt", FileMode.Create);
//FileStream fs = File.OpenRead(@"c:\1.txt"); //不用new而已
FileStream fs = File.OpenWrite(@"c:\1.txt"); //不用new而已
// FileStream fs = new FileStream(@"c:\1.txt", FileMode.Create);
3、Stream类是FileStream类的父类,有MemoryStream(内存流)、GZipStream (压缩解压流)、CryptoStream (加密流), GZipStream 、 CryptoStream 是装饰者模式的应用。尽量只操作父类Stream。
(1)文件压缩原理:找文件里重复的地方。比如:字符串”你好你好你好你好你好你好你好你好你好你好”,压缩成”10个你好”或”十个你好”等,所以文件里的重复率越高,压缩率就会越高。
(2).JPG文件是压缩文件。例如,电脑上截图两张图片,尺寸一样大,一张是内容很丰富色彩很丰富的图,一张是纯白,保存的后缀格式都为.JPG,就会发现纯白所占的内存要小很多。就是这个原理。
4、只读写文本,不用每次都写代码进行复杂的代码,编写自己的MyStreamReader、编写自己的MyStreamWriter。实现复用。