0

GzipStreamから解凍すると、「GZipフッターのストリームサイズが実際のストリームサイズと一致しません」というIO例外が発生します。このエラーは複数のファイルで100%発生しているため、これが「実際の」破損ファイルの問題であるとは思われません。

圧縮コードは次のとおりです。

 using (var fileStream = fileInfo.OpenRead())
            {
                using (var outFile = File.Create(Path.Combine(backupLocation, backupFileName.ToString())))
                {
                    using (var gzCompressionStream = new GZipStream(outFile, CompressionMode.Compress))
                    {
                        fileStream.CopyTo(gzCompressionStream);
                    }
                }
            }

例外をスローしている解凍コードは次のとおりです。

using (var fileStream = fileInfo.OpenRead())
            {
                // remove the extension
                var fileName = fileInfo.Name;
                var originalName = fileName.Remove(fileName.Length - fileInfo.Extension.Length);

                using (var outFile = File.Create(Path.Combine(transferLocation, originalName)))
                {
                    using (var gzDecompressionStream = new GZipStream(fileStream,CompressionMode.Decompress))
                    {
                        gzDecompressionStream.CopyTo(outFile);
                    }
                }
            }
4

1 に答える 1

1

すべて、あなたの助けに感謝します-私が問題を見つけたようです。圧縮ファイルサイズが4GBを超える場合にのみエラーが発生します。これを下回ると、すべてが正常に機能します。MSDNでは、GZipStreamは.Net 4で最大8GBのファイルサイズで機能すると述べているため、これは問題にはなりません。 'm using)であり、最大ファイルサイズは常に6GB(アプリケーション制限)未満になります。ただし、以前のバージョンのGZipStreamは最大4 GBしかサポートしていませんでした。この場合、MSDNのドキュメントが正しくないように見えます。

于 2012-05-14T21:39:56.953 に答える