如果没有路径验证,File.Exists的目的是什么?

时间:2014-10-01 14:54:26

标签: .net msdn

在我阅读方法System.IO.File.Exists(string path)时,我对句子感到困惑

  

Exists方法不应该用于路径验证,这种方法   只检查路径中指定的文件是否存在。

对我来说,两个语句“此路径中的文件存在”和“[文件]的路径有效”几乎是同义词,所以我遗漏了一些东西。什么?为什么我不应该使用File.Exists()验证路径?

4 个答案:

答案 0 :(得分:7)

由于下一句话:

  

将无效路径传递给Exists会返回false

通常总是会产生异常。不是在File.Exists()的情况下:

   bool miracle = File.Exists(":::");

所以要小心,文件可能实际存在,但你可能只是弄乱了字符串。你无法分辨,没有例外可以警告你。

请记住,这不是File.Exists()的问题结束的地方。您也不能信任 true 返回值。在多任务操作系统上运行代码的危险,该文件可能在一个纳秒后被另一个进程删除。这可能会导致一些非常神秘的崩溃当然:)最好完全避免它,只是尝试打开文件(那是原子的)并捕获异常(如果不存在)。

答案 1 :(得分:5)

如果路径在语法上不正确怎么办? Exists()将返回false,暗示您现在可以创建该文件,这不是真的。

答案 2 :(得分:0)

因为这是两件不同的事情......正如C鲍尔指出的那样,路径可以存在,但文件可能不存在。

如果路径不存在,则会抛出一个异常,但如果路径末尾的文件不存在,则返回false,可以在if语句中使用。如何使用它的一个例子是:

if(System.IO.File.Exists(path))
{
    //write to this file
}
else
{
    //create the file then write to it...
}

我一直将它用于软件中的日志文件,因此我可以使用一个函数来完成对文件的所有写入操作,第一次调用该函数时,它只会创建文件然后写入文件。每隔一次它就会在文件中添加一行。

编辑:拼写

答案 3 :(得分:0)

我认为这意味着......

如果该路径中存在该文件.. FOUND

如果该路径中的路径不存在... NOT FOUND

但是如果文件不存在并且你给出了一个NOT OK ......这并不意味着该路径不存在......这意味着FILE不存在。

你可以拥有路径,但不能获得文件,并获得一个NOT FOUND

返回