C#中对文件压缩和可以使用两个类:

  1. GZipStream 类

此实例分为几个模块,分别为:

压缩函数:

  1. /// <summary>
  2. /// 压缩文件
  3. /// </summary>
  4. /// <param name="filename"></param>
  5. /// <param name="charData"></param>
  6. static void SaveCompressedFiles(string filename,string strinput) //这里不能使用 char[] 数组,因为输入的字符串的长度是不可知的
  7. {
  8. FileStream fs = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.Write);
  9.  
  10. //两个参数分别为:1:要压缩或解压缩的流, 2:用于指示压缩还是解压缩流的枚举值之一。
  11. GZipStream gzs = new GZipStream(fs, CompressionMode.Compress); //将流中的文件信息进行压缩
  12. StreamWriter sw = new StreamWriter(gzs); //将压缩后的流 写入到文件中
  13. sw.Write(strinput);
  14. sw.Close();
  15. }

解压函数:

  1. /// <summary>
  2. /// 解压文件
  3. /// </summary>
  4. /// <param name="filename"></param>
  5. /// <returns></returns>
  6. static string LoadCompressedFiles(string filename)
  7. {
  8. FileStream fileStream = new FileStream(filename, FileMode.Open, FileAccess.Read); //将文件读进流
  9. GZipStream gzipSream = new GZipStream(fileStream, CompressionMode.Decompress); //解压基础流
  10.  
  11. StreamReader sr = new StreamReader(gzipSream);
  12. string data = sr.ReadToEnd(); //从当前位置一直读到流的最后
  13. return data;
  14. }

输出压缩后的长度函数:

  1. /// <summary>
  2. /// 输出压缩后的长度
  3. /// </summary>
  4. /// <param name="inputstring"></param>
  5. static void PrintfCompressedLenth(string inputstring)
  6. {
  7. SaveCompressedFiles("test.txt", inputstring);
  8.  
  9. FileInfo fi = new FileInfo("test.txt");
  10.  
  11. long lenth = fi.Length;
  12.  
  13. Console.WriteLine("压缩后的长度为:{0}", lenth);
  14. }

输出源的长度函数:

  1. /// <summary>
  2. /// 输出源的长度
  3. /// </summary>
  4. static void PrintSourceLenth()
  5. {
  6. string strOutput = LoadCompressedFiles("test.txt");
  7. StreamWriter sw = new StreamWriter("temp.txt");
  8. sw.Write(strOutput);
  9. sw.Close(); //必须关闭,否则下面的无法访问
  10.  
  11. FileStream fileS = new FileStream("temp.txt", FileMode.Open);
  12. StreamReader sr = new StreamReader(fileS);
  13.  
  14. string line = sr.ReadLine();
  15.  
  16. Console.WriteLine("解压后的长度为:{0}", line.Length);
  17. }

获得用户输入的字符串数据函数:

  1. /// <summary>
  2. /// 获得用户输入的字符串数据
  3. /// </summary>
  4. /// <returns></returns>
  5. static string UserInputString()
  6. {
  7. Console.Write("请输入一个字符串:");
  8. string str = Console.ReadLine();
  9. StringBuilder strBuilder = new StringBuilder(str);
  10. for (int i = ; i < ; i++) //将字符串复制10次,注意这里是呈指数级别增加的
  11. {
  12. strBuilder.Append(strBuilder);
  13. }
  14. Console.WriteLine("压缩前的长度为:{0}", strBuilder.Length);
  15. return strBuilder.ToString();
  16. }

Main函数:

  1. static void Main(string[] args)
  2. {
  3. try
  4. {
  5. //获取用户输入的字符串
  6. string strInput = UserInputString();
  7.  
  8. //调用函数输出压缩后的长度
  9. PrintfCompressedLenth(strInput);
  10.  
  11. //调用函数 输出解压后(源文件)的文件长度
  12. PrintSourceLenth();
  13. }
  14. catch (System.Exception ex)
  15. {
  16. Console.WriteLine(ex.Message);
  17. }
  18. }

结果如下:

使用 C# 对文件进行压缩和解压的更多相关文章

  1. C#文件或文件夹压缩和解压方法(通过ICSharpCode.SharpZipLib.dll)

    我在网上收集一下文件的压缩和解压的方法,是通过ICSharpCode.SharpZipLib.dll 来实现的 一.介绍的目录 第一步:下载压缩和解压的 ICSharpCode.SharpZipLib ...

  2. linux下文件加密压缩和解压的方法

    一.用tar命令 对文件加密压缩和解压 压缩:tar -zcf  - filename |openssl des3 -salt -k password | dd of=filename.des3 此命 ...

  3. java实现文件的压缩和解压

    java实现文件的压缩和解压 代码压缩实现 package com.hjh.demo.zip; import java.io.BufferedInputStream; import java.io.F ...

  4. [Swift通天遁地]七、数据与安全-(9)文件的压缩和解压

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  5. 用jdk1.6的pack200和unpack200,对jar文件进行压缩和解压 .pack.gz

    用jdk1.6的pack200和unpack200,对jar文件进行压缩和解压 解压xxx.jar.pack.gz为xxx.jar:unpack200 -r xxx.jar.pack.gz xxx.j ...

  6. C#文件或文件夹压缩和解压

    C#文件或文件夹压缩和解压方法有很多,本文通过使用ICSharpCode.SharpZipLib.dll来进行压缩解压 1.新建一个winform项目,选择项目右键 管理NuGet程序包,搜索ICSh ...

  7. gz文件的压缩和解压

    gz文件的压缩和解压 压缩: gzip filename 解压: gunzip filename.gz

  8. 【C#公共帮助类】WinRarHelper帮助类,实现文件或文件夹压缩和解压,实战干货

    关于本文档的说明 本文档使用WinRAR方式来进行简单的压缩和解压动作,纯干货,实际项目这种压缩方式用的少一点,一般我会使用第三方的压缩dll来实现,就如同我上一个压缩类博客,压缩的是zip文件htt ...

  9. 利用c#自带的类对文件进行压缩和解压处理

    在做网络传输文件的小例子的时候,当传输的文件比较大的时候,我们通常都是将文件经过压缩之后才进行传输,以前都是利用第三方插件来对文件进行压缩的,但是现在我发现了c#自带的类库也能够实现文件的压缩,实际上 ...

  10. ZIP文件流压缩和解压

    前面写了一篇文章 "ZIP文件压缩和解压", 介绍了" SharpZipLib.Zip " 的使用, 最近的项目中,在使用的过程中, 遇到一些问题. 比如, 现 ...

随机推荐

  1. java和javascript中this区别的浅探讨

    今天在学习javascript的时候碰到了this,感觉它跟java里的有点不一样.然后上网查了一下,参考了这篇文章,JavaScript中this关键字详解,发现它们之间的区别主要是这样: java ...

  2. webstorm 添加文件模板

    Ctrl+Shift+A 搜索设置 File Teamplate ​ 添加 File Teamplate

  3. userscript.user.js 文件头

    // ==UserScript== // @name MyUserScript // @namespace https://github.com/MrLeo // @description users ...

  4. Mac OS + Nginx + Mysql + PHP 本地环境搭建

    本文是用Mac系统下搭建的环境,使用Linux的童鞋也不要在意,因为很相似,只有下载安装的方式有一点区别.直接进入正文: 1.首先我们需要下载Homebrew,Homebrew简称brew,是Mac ...

  5. ajax 设置Access-Control-Allow-Origin实现跨域访问

    ajax跨域访问是一个老问题了,解决方法很多,比较常用的是JSONP方法,JSONP方法是一种非官方方法,而且这种方法只支持GET方式,不如POST方式安全. 即使使用jquery的jsonp方法,t ...

  6. CLR via C# 线程基础知识读书笔记

    1.线程的开销 a.线程内核对象 b.线程环境块 c.用户模式栈(1MB) d.内核模式栈 f.DLL线程连接和线程分离通知 2.线程的优先级由进程优先级和线程优先级共同组成 3.进程中所有的前台线程 ...

  7. IIS支持PHP

    1. 解压php-5.2.6.zip到D:\php5,找到php.ini-dist改名为php.ini并将它放到C:\WINDOWS目录下. 2. 将D:\ php5目录下的libmcrypt.dll ...

  8. C# 时间戳

    C# 时间与时间戳互转 13位 /// <summary> /// 将c# DateTime时间格式转换为Unix时间戳格式 /// </summary> /// <pa ...

  9. centos 格式化硬盘并挂载,添加重启后生效

    [root@cloud /]# passwd 更改用户 root 的密码 . 新的 密码: 重新输入新的 密码: passwd: 所有的身份验证令牌已经成功更新. [root@cloud /]# fd ...

  10. Nginx 老是抢先捕获了404 我想这个404我Yii项目来处理 要怎么配置?

    配置Nginx vhost的时候别指定error_page 它就不会跟Yii抢生意了 or 你弄一个frontendController   然后再里面 加上 $user->loginRequi ...