.NET 4.5の新しいZipArchiveおよびZipArchiveEntryクラスを使用して、Zip パッケージからファイルを抽出しています。
それは基本的に何が起こっているかです:
try {
using (var archive = ZipFile.OpenRead(filename))
{
foreach (var entry in archive.Entries)
{
// Check if file should be extracted
...
entry.ExtractToFile(@"C:\Test\" + entry.FullName, true)
}
}
}
catch (Exception ex)
{
MessageBox.Show("Unzipping error: " + ex.Message);
}
標準の Windows エクスプローラーの「Extract All...」コマンドまたは 7zip を使用してこのファイルを解凍しようとすると、常にエラーが発生します (テスト目的でファイルを破損させたため、予想どおり)、コードを試してみると例外はありません。がスローされ、すべてのファイルが解凍されます。
Microsoft MSDN ドキュメントによると、をスローするInvalidDataException
必要があります。
ZipFileExtensions.ExtractToDirectory
InvalidDataException
エントリがアーカイブにないか、壊れていて読み取ることができません。- または - サポートされていない圧縮方法を使用して、エントリが圧縮されています。
私は何を間違っていますか?または、このパッケージ内のファイルが破損しているかどうかを確認するにはどうすればよいですか?