47

基本コード:

string startPath = @"C:\intel\logs";
string zipPath = @"C:\intel\logs-" + DateTime.Now.ToString("yyyy_dd_M-HH_mm_ss") + ".zip";
ZipFile.CreateFromDirectory(startPath, zipPath);

エラー: 別のプロセスで使用されているため、プロセスはファイル "path_to_the_zip_file_created.zip" にアクセスできません。

上記のセットアップは、Visual Studio がインストールされている Windows 7 では正常に動作しますが、Windows Server 2008R2 で実行すると上記のエラー メッセージが表示されます。

ウイルス対策ログを確認しましたが、アプリケーションはブロックされず、作成された zip ファイルもロックされません。

4

5 に答える 5

112
//WRONG
ZipFile.CreateFromDirectory("C:\somefolder", "C:\somefolder\somefile.zip");
//RIGHT     
ZipFile.CreateFromDirectory("C:\somefolder", "C:\someotherfolder\somefile.zip");

私は同じエラーを行うために使用します: zip しているのと同じフォルダーにファイルを zip します
もちろん、これはエラーを引き起こします。

于 2014-06-19T10:41:55.307 に答える
6

他の答えは正しい理由を提供しますが、一見しただけでそれらを理解するのに少し問題がありました。コメントできないので、これを回答にします。後でこれを訪れる人にとっては簡単かもしれません。

作成中の Zip ファイルのパスが、ZipFile.CreateFromDirectory に指定されたパスと同じである場合、ZipFile は目的の zip ファイルを作成し、ディレクトリからそれにファイルを追加し始めます。最終的には、同じディレクトリにあるため、目的の zip ファイルも zip に追加しようとします。目的の zipfile が CreateFromDirectory メソッドによって使用されているため、これは不可能であり、必須ではありません。

于 2015-01-26T05:46:15.743 に答える