如何使用C#
回答
看一看的GZipStream,它是在框架中内置的ZIP支持的一个,还有的MSDN页面上的例子: http://msdn.microsoft.com/en-us/library/system.io.compression.gzipstream.aspx
下面是来自MSDN页面的例子:
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);
}
}
}
}
}
这将不允许您解压缩和压缩ZIP文件。尽管它们都使用DEFLATE,但ZIP和GZIP不兼容。 – 2010-08-02 14:07:38
尝试使用FastZip建议解压缩文件,选择文件夹的方法到zip and unzip the files
你有两个选择,
1)你可以使用一个第三方API,如DotNetZip(http://www.codeplex.com/DotNetZip)
2),也可以使用System.IO.Compression.DeflateStream。它需要.NET 2.0。
不,“DeflateStream”不能解压缩文件。 – Noldorin 2010-08-02 09:41:35
我认为它 - 从MSDN“这个类代表Deflate算法,无损文件压缩和解压缩的行业标准算法” - http://msdn.microsoft.com/en-us/library/system.io.compression .deflatestream.aspx – Bhaskar 2010-08-02 12:03:48
仅DeflateStream无法解压缩.zip文件。实际上,您明确链接的页面说:“这个类本身不提供向.zip文件添加文件或从.zip文件中提取文件的功能。” – 2010-08-02 14:09:38
在.NET中,有两种内置的压缩流处理方式。 DeflateStream和GZipStream
DeflateStream ds = new DeflateStream(File.OpenRead(@"c:\myfolder\data.zip"), CompressionMode.Decompress);
GZipStream gZip = new GZipStream(File.OpenRead(@"c:\myfolder\data.zip"), CompressionMode.Decompress);
文件不是流。他们得到了你指定的流不能使用的标题。 – AgentFire 2012-09-10 16:12:22
- 1. 如何使用C/C++/JAVA
- 2. 如何使用C#
- 3. 如何使用C#
- 4. 如何使用C#
- 5. 如何使用C#
- 6. 如何使用C#
- 7. 如何使用C#
- 8. 如何使用C#
- 9. 如何使用C#
- 10. 如何使用C#
- 11. 如何使用C#
- 12. 如何使用C#
- 13. 如何使用C#
- 14. 如何使用C#
- 15. 如何使用C#
- 16. 如何使用C#
- 17. 如何使用C#
- 18. 如何使用C++
- 19. 如何使用C#
- 20. 如何使用C#
- 21. 如何使用C#
- 22. 如何使用C#
- 23. 如何使用C#
- 24. 如何使用C#
- 25. 如何使用C#
- 26. 如何使用C#
- 27. 如何使用C#
- 28. 如何使用C#
- 29. 如何使用C#
- 30. 如何使用C#
call unzip?...... – 2010-08-02 08:43:23