我正在尝试删除文件,但以下代码不会这样做。它不会抛出异常,但文件仍然存在。这可能吗?
try
{
File.Delete(@"C:\File.txt");
}
catch(Exception e)
{
Console.WriteLine(e);
}
如果无法删除文件,则应打印出异常,但不会。这应该是无声的失败(如在File.Delete方法中吞下任何错误)?
答案 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)
另一个例子可能是删除请求处于一种排队状态。例如,文件已被锁定,因为它在被另一个进程编辑后尚未关闭。如果是这种情况,您可以更改该过程以正确关闭文件或终止该过程,文件将消失。