2009-12-16 65 views
1

當過我嘗試刪除該文件中的某些時候,我得到這個消息 文件不能被刪除由另一個進程使用 即使文件沒有被任何其他用戶 代碼我所使用文件不能刪除由另一個進程使用

try 
{ 

FileInfo TheFile = new FileInfo(MapPath(".") + "\\" + txtFile.Text); 
if (TheFile.Exists) { 
File.Delete(MapPath(".") + "\\" + txtFile.Text); 
} 
else { 

throw new FileNotFoundException(); 
} 
} 

catch (FileNotFoundException ex) { 

lblStatus.Text += ex.Message; 
} 

是有辦法,我們可以
這裏指定一個布爾值,如果真意味着我可以顯示一個消息tellingfile被刪除成功 布爾值是假的 這裏如果虛假意味着我可以顯示由另一個進程使用

我可以寫在這裏 File.Delete(MapPath(".") + "\\" + txtFile.Text); 該條件的消息,告知文件的任何幫助將是巨大謝謝

+0

順便說一句,你有124個問題,你只接受了大約一半。如果你想快速回答,建議你接受其中的一些。 – 2009-12-16 13:16:36

回答

0

你爲什麼不嘗試

if (TheFile.Exists) { 
    TheFile.Delete(); 
} 

+0

感謝您的回覆我把所有上述仍然相同的問題連接起來 FileInfo mfile = new fileInfo() mFile。刪除() 有時文件被刪除某些時候它給了異常「 算命另一個進程使用」 – happysmile 2009-12-16 13:24:34

1

可以使用

FileInfo.Delete

方法。如果該文件不存在,則此方法不執行任何操作。

同時檢查是否存在已鎖定該文件的任何其他文件句柄,刪除文件前關閉它們。

+0

這個答案將工作..-我相信,怎麼當文件被打開FileInfo.Delete將拋出一個異常..也嘗試使用此http://download.cnet.com/Unlocker/3000-2248_4-10493998.html檢查,如果該文件被鎖定(和Wat進程鎖定它).. – 2009-12-16 14:35:06

3

根據我的經驗,如果說正在被另一個進程使用的文件,該文件是正在由另一個進程使用,不管你認爲 ...

下載ProcessExplorer找出誰是罪魁禍首是...

0

如果啓用了索引服務,請確保從索引列表中排除此文件夾。

0

如果你想如果文件被成功刪除,否則爲false剛剛返回true的方法,我會去用:

 public bool DeleteFile(string fullPath) { 
      bool fileDeleted = false; 

      if (System.IO.File.Exists(fullPath)) 
      { 
       try 
       { 
        System.IO.File.Delete(fullPath); 
        fileDeleted = true; 
       } 
       catch (UnauthorizedAccessException) 
       { 
        // File is open **or read only** 
       } 
      } 
      else 
      { 
       // File does not exist 
      } 

      return fileDeleted; 
     } 
1

有點晚了,我知道的一方,但希望這些評論將幫助他人 - >

這個問題不在Chrome中發生,但在IE6/7/8和FF中。這種方法現在在我後面的瀏覽器中工作:

    try 
        { 

         System.IO.File.Delete(basePath + assetImage.Path); 
        } 
        catch 
        { 
         System.IO.File.Move(basePath + assetImage.Path, basePath + @"DELETE\ " + assetImage.Path); 
        } 
相關問題