3

私は webClient クラスの DownloadFile メソッドを使用して web からファイルをダウンロードし、それにいくつかの変更を加える ASP.NET プログラムを持っています。次に、一意の名前で別のフォルダーに保存しています。このエラーが発生した場合

別のプロセスで使用されているため、プロセスはファイル 'D:\RD\dotnet\abc\abcimageupload\images\TempStorage\tempImage.jpg' にアクセスできません

誰でもこれを解決する方法を教えてもらえますか。

4

6 に答える 6

6

一般的に、あなたのコードはこのように見えるべきだと思います。

WebClient wc = new WebClient();
wc.DownloadFile("http://stackoverflow.com/Content/Img/stackoverflow-logo-250.png", "Foo.png");
FileStream fooStream;
using (fooStream = new FileStream("foo.png", FileMode.Open))
{
    // do stuff
}
File.Move("foo.png", "foo2.png");
于 2008-11-26T15:44:31.347 に答える
4

SysInternals のツールを使用して、どのアプリケーションがファイルにアクセスし、この種の問題を引き起こしているかを追跡することに成功しました。

Process Monitorは必要なツールです。関心のあるフォルダー内のファイルのみに出力をフィルター処理するように設定すると、ファイルへのすべてのアクセスを確認できます。

問題が何であるかを推測する必要がなくなります。

于 2008-11-27T05:57:40.640 に答える
1

以下を試して、ファイルストリームを非同期モードに設定します(3番目のパラメーター)

FileStream myStream = File.Create(fileName, results.Length,FileOptions.Asynchronous);
//make sure you close the file
myStream.Write(results, 0, results.Length);
myStream.Flush();
myStream.Close();
myStream.Dispose();

これが失敗した場合は、アクセスするファイル b4 の属性をリセットします

File.SetAttributes(Server.MapPath(sendFilepath), FileAttributes.Normal);
于 2009-03-25T02:17:32.600 に答える
0

変更を加えた後、ファイルストリームを明示的に閉じていますか?

于 2008-11-26T15:23:34.680 に答える
0

これがあなたの問題を解決するかどうかはわかりません..

テキストファイルに書き込んでからそれを開こうとすると、まったく同じエラーが発生しました。

ライターをフラッシュし、ファイルへの書き込み後に閉じることで解決しました。

于 2009-01-17T20:00:28.737 に答える