在做网络传输文件的小例子的时候,当传输的文件比较大的时候,我们通常都是将文件经过压缩之后才进行传输,以前都是利用第三方插件来对文件进行压缩的,但是现在我发现了c#自带的类库也能够实现文件的压缩,实际上是对数据的压缩吧,为什么说是对具体的数据经行压缩了,请看下面实现压缩的代码吧。

注意在用c#自带的类库实现文件压缩和解压的时候需要添加下面的引用:

using System.IO.Compression;
using System.IO;

压缩文件的代码如下:

        /// <summary>
///压缩文件
/// </summary>
/// <param name="filePath">需要被压缩文件的路径</param>
private void FileCompression(string filePath)
{
StreamReader sr = new StreamReader(filePath);
//读取出文件中的内容来。
string data=sr.ReadToEnd();
//压缩文件的后缀名可以随意起。
FileStream filedata = new FileStream("myCompression.mZP", FileMode.Create, FileAccess.Write);
GZipStream zip = new GZipStream(filedata, CompressionMode.Compress);
StreamWriter sw = new StreamWriter(zip);
//将文件的内容写入到压缩的流当中
sw.Write(data);
zip.Close();
sr.Close();
filedata.Close();
//关闭流一定要按照流的顺序来,否则会出现异常:无法访问已关闭的文件。
// zip.Close(); }

然后实现解压的代码与上面类似

解压文件的代码如下:

        private void fileDeCompression()
{
//将以压缩的文件变为一个文件流
FileStream fileCompression = File.OpenRead("myCompression.mZP");
GZipStream gzp = new GZipStream(fileCompression, CompressionMode.Decompress); StreamReader sr = new StreamReader(gzp);
//读取出解压后的数据
string data = sr.ReadToEnd();
MessageBox.Show(data);
gzp.Close();
fileCompression.Close();
sr.Close();
}

通过使用上面的两个方法即可实现对文件或者是数据的压缩和解压。

使用自带的类也会存在一些缺点:无法对文件夹经行压缩。

最新文章

  1. ElasticSearch 5学习(5)——第一个例子(很实用)
  2. Unity3D音乐音效研究-MIDI与波表
  3. (转)sscanf() - 从一个字符串中读进与指定格式相符的数据
  4. 15.Linux安装DHCP服务为虚拟机分配IP
  5. jQuery基础之(六)jQuery浏览器的兼容性(以CSS3特写兼容举例)
  6. Android studio 程序升级和sdk manager 升级方法
  7. qsort 排序功能 总结
  8. 访问servlet的路径问题
  9. sso示例代码
  10. 一文掌握 Linux 性能分析之网络篇
  11. 美团--Quake全链路压测平台
  12. tensorflow tfrecord文件存储
  13. 通过sqoop将hdfs数据导入MySQL
  14. Java思维理清思路
  15. AWT/Swing——事件处理
  16. 初识生成器与生成器表达式 Day12
  17. Mybatis在oracle数据库中插入数据后返回自增值ID
  18. [知乎]关于WindowsXPx64SP2系统的说明
  19. 算法笔记_199:第二届蓝桥杯软件类决赛真题(C语言本科)
  20. ddt 接口框架数据处理调用excel 处理

热门文章

  1. ZZNU 1719(最长上升子序列+最长下降子序列)
  2. 实现一个算法,寻找字符串中出现次数最少的、并且首次出现位置最前的字符 如&quot;cbaacfdeaebb&quot;,符合要求的是&quot;f&quot;,因为他只出现了一次(次数最少)。并且比其他只出现一次的字符(如&quot;d&quot;)首次出现的位置最靠前。
  3. Java并发工具类之同步屏障CyclicBarrier
  4. jQuery Validation Plugin
  5. .Net - WebApi
  6. Python小白学习之路(十二)—【前向引用】【风湿理论】
  7. Redis数据类型之SDS简单动态字符串
  8. (转)ldd 查看程序依赖库
  9. Eclipse *的安装(图文详解)
  10. 10-hdfs-hdfs搭建