私は 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
ブロックを使用している間)。using
open を再度呼び出すと、ブロックが少し不幸になるかどうかはわかりませんでした。
ありがとう。