基本的に、このコード サンプルを msdn から直接コピーし、最小限の変更を加えました。メソッドは静かに失敗しており、そのCopyTo
理由はわかりません。この動作の原因は何ですか? 1 つのテキスト ファイルを含む 78 KB の zip フォルダーが渡されます。返さ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);
}
}
}
}