using System;
using System.IO;
using System.IO.Compression; namespace zip
{ public class Program
{ public static void Main()
{
// Path to directory of files to compress and decompress.
string dirpath = @"c:\users\public\reports"; DirectoryInfo di = new DirectoryInfo(dirpath); // Compress the directory's files.
foreach (FileInfo fi in di.GetFiles())
{
Compress(fi); } // Decompress all *.gz files in the directory.
foreach (FileInfo fi in di.GetFiles("*.gz"))
{
Decompress(fi); } } public static void Compress(FileInfo fi)
{
// Get the stream of the source file.
using (FileStream inFile = fi.OpenRead())
{
// Prevent compressing hidden and
// already compressed files.
if ((File.GetAttributes(fi.FullName)
& FileAttributes.Hidden)
!= FileAttributes.Hidden & fi.Extension != ".gz")
{
// Create the compressed file.
using (FileStream outFile =
File.Create(fi.FullName + ".gz"))
{
using (GZipStream Compress =
new GZipStream(outFile,
CompressionMode.Compress))
{
// Copy the source file into
// the compression stream.
inFile.CopyTo(Compress); Console.WriteLine("Compressed {0} from {1} to {2} bytes.",
fi.Name, fi.Length.ToString(), outFile.Length.ToString());
}
}
}
}
} public static void Decompress(FileInfo fi)
{
// Get the stream of the source file.
using (FileStream inFile = fi.OpenRead())
{
// Get original file extension, for example
// "doc" from report.doc.gz.
string curFile = fi.FullName;
string origName = curFile.Remove(curFile.Length -
fi.Extension.Length); //Create the decompressed file.
using (FileStream outFile = File.Create(origName))
{
using (GZipStream Decompress = new GZipStream(inFile,
CompressionMode.Decompress))
{
// Copy the decompression stream
// into the output file.
Decompress.CopyTo(outFile); Console.WriteLine("Decompressed: {0}", fi.Name); }
}
}
} }
}

最新文章

  1. Android中Fragment与Activity之间的交互(两种实现方式)
  2. [LeetCode] Reorder List 链表重排序
  3. psutil一个基于python的跨平台系统信息跟踪模块
  4. 实例讲述PHP面向对象的特性;;;php中const与define的使用区别
  5. 【转】SVN提示:由于目标机器积极拒绝,无法连接 的解决方法
  6. jQuery 中屏蔽浏览器的F5刷新功能
  7. MyBatis笔记——初次环境配置
  8. QT小技巧(书上没有的)
  9. SQLServer实现split分割字符串到列
  10. 【LeetCode题意分析&解答】33. Search in Rotated Sorted Array
  11. Reverse Integer - Palindrome Number - 简单模拟
  12. JVM菜鸟进阶高手之路五
  13. C语言之赋值
  14. Redis调用的流程(新手使用)
  15. 重新安装liteide后无法关联.go文件的解决办法(及更改liteide配色方案)
  16. freeswitch反注册记录
  17. Redis实战经验及使用场景
  18. Linux系统管理员应该知道的journalctl知识
  19. 使用fiddler轻轻松松制造客户端接口time out的情况
  20. java动态代理技术

热门文章

  1. 51nod 1179 最大的最大公约数 一种筛选的方法
  2. adb connect 192.168.1.10 failed to connect to 192.168.1.10:5555
  3. FastJson中文乱码
  4. 【Demo】jQuery 图片放大镜效果——模仿淘宝图片放大效果
  5. Leetcode 52
  6. C# Lock关键字
  7. qt忙等与非忙等
  8. 彻底弄懂jQuery事件原理二
  9. SPDY以及示例
  10. 免费180天的Ashampoo Anti-Virus 2014