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