私は SharpCompress ライブラリを使用しています (それは問題ではありません)。私のzipは保護されていないか、パスワードで保護されています(すべて同じパスワードで)。だから私はこのようにコーディングしています:
using(Stream stream = File.OpenRead(file))
{
try {
reader = ZipReader.Open(stream);
moreFiles = reader.MoveToNextEntry();
} catch (Exception e) {
reader = ZipReader.Open(stream, pwd);
moreFiles = reader.MoveToNextEntry();
}
//rest of code
}
MoveToNextEntryストリームが開始されていないと思うため、呼び出すキャッチブロックに到達するたびに、あいまいな「無効なヘッダー:xxxxxxxx」例外が常に発生します。
ブロックFile.OpenRead(file)を使用しているため、例外の中に a を入れることができません。using(コメントで提案されているように)シークを使用すると、設定されていないオブジェクト参照が取得されます(おそらくdisposeが呼び出されました)。
このファイル ストリームをリセットし、確実に破棄する方法はありますか (まだusingブロックを使用している間)。usingopen を再度呼び出すと、ブロックが少し不幸になるかどうかはわかりませんでした。
ありがとう。