【发布时间】:2013-10-03 17:54:55
【问题描述】:
我基本上是直接从 msdn 复制了这个代码示例,只做了一些微小的改动。 CopyTo 方法默默地失败了,我不知道为什么。什么会导致这种行为?它正在传递一个 78 KB 的压缩文件夹,其中包含一个文本文件。返回的FileInfo 对象指向一个 0 KB 的文件。不会抛出异常。
public static FileInfo DecompressFile(FileInfo fi)
{
// Get the stream of the source file.
using (FileStream inFile = fi.OpenRead())
{
// Get original file extension,
// for example "doc" from report.doc.cmp.
string curFile = fi.FullName;
string origName = curFile.Remove(curFile.Length
- fi.Extension.Length);
//Create the decompressed file.
using (FileStream outFile = File.Create(origName))
{
// work around for incompatible compression formats found
// here http://george.chiramattel.com/blog/2007/09/deflatestream-block-length-does-not-match.html
inFile.ReadByte();
inFile.ReadByte();
using (DeflateStream Decompress = new DeflateStream(inFile,
CompressionMode.Decompress))
{
// Copy the decompression stream
// into the output file.
Decompress.CopyTo(outFile);
return new FileInfo(origName);
}
}
}
}
【问题讨论】:
-
您要读取和解压缩什么类型的文件? .gz、.zip 还是其他文件?
-
@huntharo 这是一个 .zip。
标签: c# .net compression zip