1

基本的に、このコード サンプルを 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);
                }
            }
        }
    }
4

1 に答える 1