File.Delete不删除文件

时间:2010-01-08 04:22:04

标签: c# .net

我正在尝试删除文件,但以下代码不会这样做。它不会抛出异常,但文件仍然存在。这可能吗?

try
{
    File.Delete(@"C:\File.txt");
} 
catch(Exception e)
{
    Console.WriteLine(e);
}

如果无法删除文件,则应打印出异常,但不会。这应该是无声的失败(如在File.Delete方法中吞下任何错误)?

5 个答案:

答案 0 :(得分:19)

如果指定的文件不存在,

File.Delete不会抛出异常。 [某些以前版本的MSDN文档错误地声明它确实如此]。

try 
{ 
    string filename = @"C:\File.txt";
    if (File.Exists(filename))
    { 
        File.Delete(filename);
    }
    else
    {
        Debug.WriteLine("File does not exist.");
    } 
}  
catch(Exception e) 
{ 
    Console.WriteLine(e); 
} 

答案 1 :(得分:3)

检查文件的路径是否正确。如果文件不存在,则不会抛出异常。如果在Windows中设置了“隐藏已知文件类型的扩展名”,则一个常见的错误是将名为File.txt的文件与名为File.txt.txt的文件混淆。

答案 2 :(得分:1)

您确定文件名是否正确?它不会抛出错误的唯一时间是文件不存在。愚蠢的问题,但你有没有机会在文件名中输入错字?或路径中的错误?

答案 3 :(得分:0)

另一种可能性是某些后台进程仍在使用该文件。然后它不会失败,但它不会删除文件。

答案 4 :(得分:0)

另一个例子可能是删除请求处于一种排队状态。例如,文件已被锁定,因为它在被另一个进程编辑后尚未关闭。如果是这种情况,您可以更改该过程以正确关闭文件或终止该过程,文件将消失。