2011-11-04 184 views
5

我想用FileUpload控件上傳文件。當文件上傳時,我從中提取信息,然後我想刪除它。上傳後刪除文件

我設法把它上傳,保存它,從它那裏得到的信息,但是當我嘗試刪除它,我得到follwing例外 「該進程無法訪問該文件「d:\ IIS ** 省略 * ** \ V75個人ny.csv」,因爲它正被另一個進程使用。

string fn = Path.GetFileName(fu.PostedFile.FileName); 
     string SaveLocation = Server.MapPath("UploadedCSVFiles") + "\\" + fn; 
     FileInfo fi = new FileInfo(SaveLocation); 

      fu.PostedFile.SaveAs(SaveLocation); 
      fu.PostedFile.InputStream.Dispose(); 
      DataTable dt = AMethodThatUsesFile(SaveLocation); 
      fi.Delete(); 
+1

我們可能需要知道什麼在AMethodThatUsesFile() –

+2

您指定了一個方法AMethodThatUsesFile(SaveLocation);.如果它使用StreamReader等任何類來讀取文件,請使用StreamReader.Close()關閉閱讀器。方法試圖刪除 – Prasanth

+0

@Prasanth這樣做了!謝謝! – Lautaro

回答

7

試試這個代碼來刪除文件。

  System.IO.File.Delete(SaveLocation); 

您指定的方法AMethodThatUsesFile(SaveLocation);.如果它使用任何類如聖reamReader讀取文件,請使用StreamReader.Close()關閉讀取器。嘗試刪除之前的方法

+0

有沒有明顯的理由他應該需要檢查文件的存在;如預期的那樣,錯誤指示文件當然存在*存在*。麻煩可能存在於上述(而不是包括)方法中。 –

1

在刪除之前配置fi。然後我們File.Delete()。記得在使用一次性對象時使用using語句,或者在使用後處置它。

+0

FileInfo是否實現了IDisposable? –

+0

@Chamika Sandamal不,這不是。我已經嘗試過了。 – Lautaro

0
using System.io 

File.Delete(Server.MapPath("../Nurturing/" + fnevents)); 
      FileInfo fInfoEvent; 
      fInfoEvent = new FileInfo(fnevents); 
      fInfoEvent.Delete(); 

這裏fnevents,就是你刪除的文件的名稱。 培育是該文件夾的名稱。