在我阅读方法System.IO.File.Exists(string path)
时,我对句子感到困惑
Exists方法不应该用于路径验证,这种方法 只检查路径中指定的文件是否存在。
对我来说,两个语句“此路径中的文件存在”和“[文件]的路径有效”几乎是同义词,所以我遗漏了一些东西。什么?为什么我不应该使用File.Exists()
验证路径?
答案 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
返回