1

さまざまなアーカイブでsevenzipsharpを実行していますが、テストに合格した場合は、アーカイブを別のフォルダーに移動したいと思います。ただし、ファイルがプロセスによって使用されているという例外が発生します。Windowsエクスプローラーでも移動できませんが、アプリプロセスを強制終了すると移動できます。セブンジップシャープがファイルをロックしているので、移動できないのではないかと思います。

私は書きusing (var extractor= new SevenZipExtractor(fn)) {ます。usingブロックの外にファイルを移動しようとしましたが、それでもうまくいきません。このメソッドを数回実行した後、最初のアーカイブを移動できるようですが、最後のアーカイブを移動することはできません。

プロセスがファイルを使用しないようにして、アーカイブをフォルダーに移動できるようにするにはどうすればよいですか?

4

2 に答える 2

0

このオブジェクトを dispose() するだけで、using(....) を使用しないでください。理由はわかりませんが (!)、この方法はうまくいきました。

しかし、アーカイブが有効でない場合、ロックされたままになります...何か提案はありますか?

更新: より良い方法があります。ファイルのストリームを作成し、コードの最後で close() できます。

Stream reader=new FileStream(filename, FileMode.Open);//You can change Open mode to OpenOrCreate
sevenZipExtractor extactor= new SevenZipExtractor((Stream)reader);

//Your code here.....

reader.Close();
extactor.Dispose();
于 2012-05-31T18:23:17.803 に答える