2009-07-13 181 views
1

我正在使用asp.net C#。我的文件夾中保存圖像文件,並刪除它。當我delete一個我它給錯誤「該進程無法訪問文件‘C:\的Inetpub \ wwwroot文件\管理\ TEMP \ visible_Jul-13-2009_035606.png’,因爲它正另一個進程使用」刪除圖片

請幫助

代碼:

fupAddImage.PostedFile.SaveAs(Server.MapPath("Temp") + @"\" + tempFilename); 
File.Delete(Server.MapPath("Temp") + @"\" + tempFilename); 
+0

添加特定的信息...你是如何保存的圖像,然後你用瞭如何將其刪除。如果你可以在這裏發佈代碼的一部分。 – 2009-07-13 10:39:19

+0

fupAddImage.PostedFile.SaveAs(Server.MapPath(「Temp」)+ @「\」+ tempFilename); File.Delete(Server.MapPath(「Temp」)+ @「\」+ tempFilename); – Xyz 2009-07-13 10:57:41

回答

2

如何將圖像保存?你是否確定要丟棄用於保存圖像的所有圖像和Stream對象?由於兩個ImageStream(和StreamWriter)實現IDisposable你應該確保調用Dispose(或設置創建對象時使用的塊),以便當圖像已保存的文件被正確關閉。

更新:有一兩件事你可以嘗試是將圖像數據保存自己,爲了獲得準確更有效地掌控它是如何做:

private static void SaveFile(Stream input, string fileName) 
{ 
    using (Stream output = File.OpenWrite(fileName)) 
    { 
     byte[] buffer = new byte[8192]; 
     int bytesRead; 
     do 
     { 
      bytesRead = input.Read(buffer, 0, buffer.Length); 
      output.Write(buffer, 0, bytesRead); 
     } while (bytesRead == buffer.Length); 
    } 
} 

// Pass the uploaded file data to the above method like this: 
SaveFile(fupAddImage.FileContent, Path.Combine(Server.MapPath("Temp"), tempFilename)) 
1

您需要發佈一些代碼就知道當然,但該文件可能仍然在某處打開,因此您的應用程序尚未發佈文件鎖定。嘗試關閉任何打開的流並在刪除之前處理​​指向該對象的任何文件句柄。

您可能還需要等待操作系統指向它所有的手柄脫手後釋放文件。

我猜問題是上面。如果你正在創建一個文件並在下一行刪除它,操作系統可能還沒有將文件刷新到磁盤,更不用說釋放文件句柄和鎖。嘗試在寫入和刪除之間給一段時間,看看是否可以再次刪除它。

0

嘗試打字:

openFiles散在命令提示符(cmd.exe的)file_path_and_filename

上找原因。

,並確保您有刪除權限。