【转载】使用C#2.0进行文件压缩和解压
2011-12-05 16:31
573 查看
using System; using System.IO; using System.IO.Compression; public class Zip { /// <summary> /// 压缩 /// </summary> /// <param name="sourceFile">源文件名,如a.txt</param> /// <param name="destinationFile">目标文件名,如a.rar</param> public static void CompressFile(string sourceFile, string destinationFile) { if (!File.Exists(sourceFile)) throw new FileNotFoundException(); using (FileStream sourceStream = new FileStream(sourceFile, FileMode.Open, FileAccess.Read, FileShare.Read)) { byte [] buffer = new byte[sourceStream.Length]; int checkCounter = sourceStream.Read(buffer, 0, buffer.Length); if (checkCounter != buffer.Length) throw new ApplicationException(); using (FileStream destinationStream = new FileStream(destinationFile, FileMode.OpenOrCreate, FileAccess.Write)) { using (GZipStream compressedStream = new GZipStream(destinationStream, CompressionMode.Compress, true)) { compressedStream.Write(buffer, 0, buffer.Length); } } } } /// <summary> /// 解压缩 /// </summary> /// <param name="sourceFile">源文件名,如a.rar</param> /// <param name="destinationFile">目标文件名,如a.txt</param> public static void DecompressFile(string sourceFile, string destinationFile) { if (!File.Exists( sourceFile)) throw new FileNotFoundException(); using (FileStream sourceStream = new FileStream(sourceFile, FileMode.Open)) { byte [] quartetBuffer = new byte[4]; int position = (int)sourceStream.Length - 4; sourceStream.Position = position; sourceStream.Read(quartetBuffer, 0, 4); sourceStream.Position = 0; int checkLength = BitConverter.ToInt32(quartetBuffer, 0); byte[] buffer = new byte[checkLength + 100]; using (GZipStream decompressedStream = new GZipStream(sourceStream, CompressionMode.Decompress, true)) { int total = 0; for (int offset = 0; ; ) { int bytesRead = decompressedStream.Read(buffer, offset, 100); if (bytesRead == 0) break; offset += bytesRead; total += bytesRead; } using (FileStream destinationStream = new FileStream(destinationFile, FileMode.Create)) { destinationStream.Write(buffer, 0, total); destinationStream.Flush(); } } } } } |
相关文章推荐
- 【转载】使用C#2.0进行文件压缩和解压
- 使用C#2.0进行文件压缩和解压
- 使用C#2.0进行文件压缩和解压
- 使用C#2.0进行文件压缩和解压
- 使用C#2.0进行文件压缩和解压
- 使用C#2.0进行文件压缩和解压
- 使用C#2.0进行文件压缩和解压(转)
- 使用 C# 对文件进行压缩和解压
- 使用C#进行文件压缩和解压
- 使用C#进行文件压缩和解压
- C#使用ICSharpCode.SharpZipLib.dll进行文件的压缩与解压功能
- 使用Zlib库进行文件的压缩和解压
- C#使用iCSharpcode进行文件压缩实现方法
- C#使用ICSharpCode.SharpZipLib对文件进行压缩
- (转载)C#利用ICSharpCode.SharpZipLib.dll压缩文件和解压文件
- 利用c#自带的类对文件进行压缩和解压处理
- 使用ZLIB生成DLL文件,并进行有中文的ZIP文件压缩与解压操作!支持目录压与解!
- c#程序操作文件进行压缩和解压
- 使用QuaZip对文件进行压缩解压操作
- 使用C#语言进行多个文件的压缩打包