检查文件是否存在后如何删除文件

Tom*_*Tom 203 .net c# windows

如何在C#中删除文件,例如C:\test.txt,尽管应用与批处理文件中相同的方法,例如

if exist "C:\test.txt"

delete "C:\test.txt"

else 

return nothing (ignore)
Run Code Online (Sandbox Code Playgroud)

Ada*_*ear 368

使用File类非常简单.

if(File.Exists(@"C:\test.txt"))
{
    File.Delete(@"C:\test.txt");
}
Run Code Online (Sandbox Code Playgroud)


正如克里斯在评论中指出的那样,你实际上并不需要进行File.Exists检查,因为File.Delete如果文件不存在则不会抛出异常,尽管如果你使用的是绝对路径,你需要检查以确保整个文件路径有效.

  • 如果要防止可能的DirectoryNotFoundException,则必须进行测试. (17认同)
  • 实际上并不需要那个测试.看我的帖子. (11认同)
  • 不应该使用该测试代替异常处理,而是使用它.任意数量的场景都可能导致exists检查返回true并删除throw. (6认同)
  • 为什么文件路径前面有一个“@”?对我来说,没有它就可以工作。 (3认同)
  • @让你不必加倍反斜杠. (3认同)

Chr*_*rle 95

像这样使用System.IO.File.Delete:

System.IO.File.Delete(@"C:\test.txt")

从文档:

如果要删除的文件不存在,则不会引发异常.

  • 如果"指定的路径无效(例如,它位于未映射的驱动器上),那将抛出DirectoryNotFoundException." (7认同)
  • 有多奇怪 Intellisense说"如果指定的文件不存在,则抛出异常". (5认同)
  • 是的我试过,只是`System.IO.File.Delete(@"C:\ test.txt");`就够了.谢谢 (3认同)
  • 我正在使用 .Net4,看起来智能感知是错误的我已经运行了检查并且没有抛出异常 (2认同)

Ver*_*cas 32

if (System.IO.File.Exists(@"C:\test.txt"))
    System.IO.File.Delete(@"C:\test.txt"));
Run Code Online (Sandbox Code Playgroud)

System.IO.File.Delete(@"C:\test.txt");
Run Code Online (Sandbox Code Playgroud)

只要该文件夹存在,它将执行相同的操作.


Ash*_*hin 31

您可以System.IO使用以下命

using System.IO;
Run Code Online (Sandbox Code Playgroud)

如果文件路径表示文件的完整路径,则可以检查其存在并将其删除,如下所示:

if(File.Exists(filepath))
{
     try
    {
         File.Delete(filepath);
    } 
    catch(Exception ex)
    {
      //Do something
    } 
}  
Run Code Online (Sandbox Code Playgroud)

  • 为什么不直接发出 Delete 调用并捕获任何表明文件不存在的异常? (3认同)
  • 我想还有更多可以抛出的异常。 (3认同)

Der*_*k W 21

如果要避免使用DirectoryNotFoundException,则需要确保文件的目录确实存在.File.Exists完成这个.另一种方法是使用PathDirectory实用程序类,如下所示:

string file = @"C:\subfolder\test.txt";
if (Directory.Exists(Path.GetDirectoryName(file)))
{
    File.Delete(file);
}
Run Code Online (Sandbox Code Playgroud)


Ahm*_*zey 15

  if (System.IO.File.Exists(@"C:\Users\Public\DeleteTest\test.txt"))
    {
        // Use a try block to catch IOExceptions, to 
        // handle the case of the file already being 
        // opened by another process. 
        try
        {
            System.IO.File.Delete(@"C:\Users\Public\DeleteTest\test.txt");
        }
        catch (System.IO.IOException e)
        {
            Console.WriteLine(e.Message);
            return;
        }
    }
Run Code Online (Sandbox Code Playgroud)


小智 11

if (File.Exists(path))
{
    File.Delete(path);
}
Run Code Online (Sandbox Code Playgroud)