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

  1. 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);
}
}

结果如下:

最新文章

  1. Struts2入门(五)——OGNL和标签库
  2. ABP源码分析六:依赖注入的实现
  3. 深入浅出UML类图(一)
  4. [原 -&gt; 砖] C# IEnumerable&lt;T&gt;泛型取值
  5. DQL_数据查询语言
  6. jQuery CSS 添加/删除类名
  7. PHP获取图片颜色值,检测图片主要颜色的代码:
  8. Java、PHP训练场地选择成都传祺播客
  9. html + CSS
  10. 【转】CSS中position属性( absolute | relative | static | fixed )详解
  11. 编写Linux/Unix守护进程
  12. Gulp安装流程、使用方法及cmd常用命令导览
  13. vs2012中使用localdb实例还原一个sql server 2008r2版本的数据库
  14. 2018开源中国最受欢迎的中国软件MyBatis-Plus
  15. Android图片采样缩放
  16. 安卓Android基础第三天——数据库,ListView
  17. 测试那些事儿—软测必备的Linux知识(一)
  18. SharePoint Framework 企业向导(三)
  19. Oracle 11G 安装图文教程
  20. 2017 计蒜之道 初赛 第五场 B. UCloud 的安全秘钥(简单)

热门文章

  1. 安装Java EE失败,解决方案
  2. 【风马一族_Python】 更替pip的版本
  3. 信号处理程序(signal handler)会被重置的信号
  4. webBrowser执行js的方法,并返回值,c#后台取值
  5. R简易入门(二)
  6. eclipse安装pydev插件
  7. with check option(视图 )
  8. jetty 8.x, 9.x无法加载jstl的PWC6188问题
  9. C#TCPClient应用-一个简单的消息发送和接收
  10. 【转载】使用Axure制作App原型怎样设置尺寸?