代码之家  ›  专栏  ›  技术社区  ›  kevindaub

文件。删除而不是删除文件

  •  13
  • kevindaub  · 技术社区  · 16 年前

    我正试图删除一个文件,但下面的代码没有做到这一点。它不会引发异常,但文件仍然存在。有可能吗?

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

    如果无法删除该文件,则应打印出异常,但不会。是否应静默失败(如文件中所示。Delete方法正在忽略任何错误)?

    5 回复  |  直到 8 年前
        1
  •  18
  •   Mitch Wheat    11 年前

    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); 
    } 
    
        2
  •  3
  •   Andy West    16 年前

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

        3
  •  1
  •   BFree    16 年前

    您确定文件名正确吗?唯一一次不抛出错误的是文件是否不存在。愚蠢的问题,但你有没有可能在文件名中有错别字?还是路径错误?

        4
  •  0
  •   Eli    8 年前

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

        5
  •  0
  •   David Galanti    8 年前

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