使用 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 " 的使用, 最近的项目中,在使用的过程中, 遇到一些问题. 比如, 现 ...
随机推荐
- Windows Phone 8.1开发:如何让ListView下拉加载更多?
Windows Phone 8.1开发中使用ListView作为数据呈现载体时,经常需要一个下拉(拇指向上滑动)加载更多的交互操作.如何完成这一操作呢?下面为您阐述. 思路是这样的: 1.在ListV ...
- Ubuntu系统下允许Apache的mod_rewrite功能
首先,使能apache的rewirte模块,在shell里输入下边的命令: sudo a2enmod rewrite 然后重启一下webserver使更改生效 sudo service apache2 ...
- 在 linux x86-32 模式下分析内存映射流程
前言 虚拟内存机制已经成为了现代操作系统所不可缺少的一部分, 不仅可以为每个程序提供独立的地址空间保证安全性,更可以通过和磁盘的内存交换来提高内存的使用效率.虚拟内存管理作为linux 上的重要组成部 ...
- win2008r2 iis7.5 mvc 403.14
痛苦的经历,网上各种办法尝试,不成功 环境如标题:发布403.14 错误 解决办法:很简单,发布时,不要使用预编译(发布期间预编译选项 不能选中) 之后就好了...折磨人的小妖精
- Spark菜鸟学习营Day4 单元测试程序的编写
Spark菜鸟学习营Day4 单元测试程序的编写 Spark相比于传统代码是比较难以调试的,单元测试的编写是非常必要的. Step0:需求分析 在测试案例编写前,需完成需求分析工作,明确程序所有的输入 ...
- openerp经典收藏 OpenERP库存管理的若干概念讲解(新增库存价值)(转载)
OpenERP库存管理的若干概念讲解(新增库存价值) 原文:http://shine-it.net/index.php/topic,2425.0/topicseen.html 一.复式库存(Doubl ...
- C# 发邮件类可发送附件
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Ne ...
- 如何在LINUX VPS上安装VPN详细步骤
在vps上安装vpn是个难点,很多朋友都不会,这儿结合一位朋友的安装经验做下介绍.注意你的vps要安装做vpn使用,一定要注意你的流量限制,使用Vpn上游戏上youtube看视频等都比较耗费资源,否则 ...
- 【BZOJ 1005】[HNOI2008]明明的烦恼
Description 自从明明学了树的结构,就对奇怪的树产生了兴趣...... 给出标号为1到N的点,以及某些点最终的度数,允许在任意两点间连线,可产生多少棵度数满足要求的树? Input 第一行为 ...
- JDBC连接数据库代码
//连接是需要导包 http://pan.baidu.com/s/1o6nyuOa /*配合数据库建立表 create database day14 character set utf8 collat ...