当前位置: 代码迷 >> 综合 >> I/O(8)——设计模式(5)——装饰者模式(2)——文件流高级
  详细解决方案

I/O(8)——设计模式(5)——装饰者模式(2)——文件流高级

热度:91   发布时间:2023-10-01 19:23:42.0

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。实现复用。

  相关解决方案