2009-12-16 63 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); 
        } 
相关问题