使用 C# 对文件进行压缩和解压
C#中对文件压缩和可以使用两个类:
- GZipStream 类
此实例分为几个模块,分别为:
压缩函数:
- /// <summary>
- /// 压缩文件
- /// </summary>
- /// <param name="filename"></param>
- /// <param name="charData"></param>
- static void SaveCompressedFiles(string filename,string strinput) //这里不能使用 char[] 数组,因为输入的字符串的长度是不可知的
- {
- FileStream fs = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.Write);
- //两个参数分别为:1:要压缩或解压缩的流, 2:用于指示压缩还是解压缩流的枚举值之一。
- GZipStream gzs = new GZipStream(fs, CompressionMode.Compress); //将流中的文件信息进行压缩
- StreamWriter sw = new StreamWriter(gzs); //将压缩后的流 写入到文件中
- sw.Write(strinput);
- sw.Close();
- }
解压函数:
- /// <summary>
- /// 解压文件
- /// </summary>
- /// <param name="filename"></param>
- /// <returns></returns>
- static string LoadCompressedFiles(string filename)
- {
- FileStream fileStream = new FileStream(filename, FileMode.Open, FileAccess.Read); //将文件读进流
- GZipStream gzipSream = new GZipStream(fileStream, CompressionMode.Decompress); //解压基础流
- StreamReader sr = new StreamReader(gzipSream);
- string data = sr.ReadToEnd(); //从当前位置一直读到流的最后
- return data;
- }
输出压缩后的长度函数:
- /// <summary>
- /// 输出压缩后的长度
- /// </summary>
- /// <param name="inputstring"></param>
- static void PrintfCompressedLenth(string inputstring)
- {
- SaveCompressedFiles("test.txt", inputstring);
- FileInfo fi = new FileInfo("test.txt");
- long lenth = fi.Length;
- Console.WriteLine("压缩后的长度为:{0}", lenth);
- }
输出源的长度函数:
- /// <summary>
- /// 输出源的长度
- /// </summary>
- static void PrintSourceLenth()
- {
- string strOutput = LoadCompressedFiles("test.txt");
- StreamWriter sw = new StreamWriter("temp.txt");
- sw.Write(strOutput);
- sw.Close(); //必须关闭,否则下面的无法访问
- FileStream fileS = new FileStream("temp.txt", FileMode.Open);
- StreamReader sr = new StreamReader(fileS);
- string line = sr.ReadLine();
- Console.WriteLine("解压后的长度为:{0}", line.Length);
- }
获得用户输入的字符串数据函数:
- /// <summary>
- /// 获得用户输入的字符串数据
- /// </summary>
- /// <returns></returns>
- static string UserInputString()
- {
- Console.Write("请输入一个字符串:");
- string str = Console.ReadLine();
- StringBuilder strBuilder = new StringBuilder(str);
- for (int i = ; i < ; i++) //将字符串复制10次,注意这里是呈指数级别增加的
- {
- strBuilder.Append(strBuilder);
- }
- Console.WriteLine("压缩前的长度为:{0}", strBuilder.Length);
- return strBuilder.ToString();
- }
Main函数:
- static void Main(string[] args)
- {
- try
- {
- //获取用户输入的字符串
- string strInput = UserInputString();
- //调用函数输出压缩后的长度
- PrintfCompressedLenth(strInput);
- //调用函数 输出解压后(源文件)的文件长度
- PrintSourceLenth();
- }
- catch (System.Exception ex)
- {
- Console.WriteLine(ex.Message);
- }
- }
结果如下:
使用 C# 对文件进行压缩和解压的更多相关文章
- C#文件或文件夹压缩和解压方法(通过ICSharpCode.SharpZipLib.dll)
我在网上收集一下文件的压缩和解压的方法,是通过ICSharpCode.SharpZipLib.dll 来实现的 一.介绍的目录 第一步:下载压缩和解压的 ICSharpCode.SharpZipLib ...
- linux下文件加密压缩和解压的方法
一.用tar命令 对文件加密压缩和解压 压缩:tar -zcf - filename |openssl des3 -salt -k password | dd of=filename.des3 此命 ...
- java实现文件的压缩和解压
java实现文件的压缩和解压 代码压缩实现 package com.hjh.demo.zip; import java.io.BufferedInputStream; import java.io.F ...
- [Swift通天遁地]七、数据与安全-(9)文件的压缩和解压
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- 用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 ...
- C#文件或文件夹压缩和解压
C#文件或文件夹压缩和解压方法有很多,本文通过使用ICSharpCode.SharpZipLib.dll来进行压缩解压 1.新建一个winform项目,选择项目右键 管理NuGet程序包,搜索ICSh ...
- gz文件的压缩和解压
gz文件的压缩和解压 压缩: gzip filename 解压: gunzip filename.gz
- 【C#公共帮助类】WinRarHelper帮助类,实现文件或文件夹压缩和解压,实战干货
关于本文档的说明 本文档使用WinRAR方式来进行简单的压缩和解压动作,纯干货,实际项目这种压缩方式用的少一点,一般我会使用第三方的压缩dll来实现,就如同我上一个压缩类博客,压缩的是zip文件htt ...
- 利用c#自带的类对文件进行压缩和解压处理
在做网络传输文件的小例子的时候,当传输的文件比较大的时候,我们通常都是将文件经过压缩之后才进行传输,以前都是利用第三方插件来对文件进行压缩的,但是现在我发现了c#自带的类库也能够实现文件的压缩,实际上 ...
- ZIP文件流压缩和解压
前面写了一篇文章 "ZIP文件压缩和解压", 介绍了" SharpZipLib.Zip " 的使用, 最近的项目中,在使用的过程中, 遇到一些问题. 比如, 现 ...
随机推荐
- java和javascript中this区别的浅探讨
今天在学习javascript的时候碰到了this,感觉它跟java里的有点不一样.然后上网查了一下,参考了这篇文章,JavaScript中this关键字详解,发现它们之间的区别主要是这样: java ...
- webstorm 添加文件模板
Ctrl+Shift+A 搜索设置 File Teamplate 添加 File Teamplate
- userscript.user.js 文件头
// ==UserScript== // @name MyUserScript // @namespace https://github.com/MrLeo // @description users ...
- Mac OS + Nginx + Mysql + PHP 本地环境搭建
本文是用Mac系统下搭建的环境,使用Linux的童鞋也不要在意,因为很相似,只有下载安装的方式有一点区别.直接进入正文: 1.首先我们需要下载Homebrew,Homebrew简称brew,是Mac ...
- ajax 设置Access-Control-Allow-Origin实现跨域访问
ajax跨域访问是一个老问题了,解决方法很多,比较常用的是JSONP方法,JSONP方法是一种非官方方法,而且这种方法只支持GET方式,不如POST方式安全. 即使使用jquery的jsonp方法,t ...
- CLR via C# 线程基础知识读书笔记
1.线程的开销 a.线程内核对象 b.线程环境块 c.用户模式栈(1MB) d.内核模式栈 f.DLL线程连接和线程分离通知 2.线程的优先级由进程优先级和线程优先级共同组成 3.进程中所有的前台线程 ...
- IIS支持PHP
1. 解压php-5.2.6.zip到D:\php5,找到php.ini-dist改名为php.ini并将它放到C:\WINDOWS目录下. 2. 将D:\ php5目录下的libmcrypt.dll ...
- C# 时间戳
C# 时间与时间戳互转 13位 /// <summary> /// 将c# DateTime时间格式转换为Unix时间戳格式 /// </summary> /// <pa ...
- centos 格式化硬盘并挂载,添加重启后生效
[root@cloud /]# passwd 更改用户 root 的密码 . 新的 密码: 重新输入新的 密码: passwd: 所有的身份验证令牌已经成功更新. [root@cloud /]# fd ...
- Nginx 老是抢先捕获了404 我想这个404我Yii项目来处理 要怎么配置?
配置Nginx vhost的时候别指定error_page 它就不会跟Yii抢生意了 or 你弄一个frontendController 然后再里面 加上 $user->loginRequi ...