2

我已经搜索了所有相关的和重复的内容,它们要么没有答案,要么使用了不同的方法,或者使用了不同的语言。文件和路径确实存在,更重要的是,我觉得这就在我的眼皮底下。代码在这里。

static void Main()
{
    string fileName = @"‪C:\Temp\eXample.txt";

    //FileInfo f = new FileInfo(fileName);

    var isFileExisting = File.Exists(fileName);
    Console.WriteLine(isFileExisting);

    Console.ReadKey();
}

更重要的是,当我取消注释 FileInfo 对象时,我收到一条错误消息,指出“不支持给定路径的格式”。我真正想做的就是检查文件是否存在。

4

2 回答 2

4

听起来你的字符串 "C:\Temp\eXample.txt" 不是它的样子。

如果字符串的第二个字符不是冒号 (:),则会得到“不支持给定路径的格式” 。

这让我认为冒号 (:) 之前有某种 UTF8 隐藏字符。只需擦除整个内容并重新键入您的字符串。

于 2016-05-16T02:45:43.640 回答
-2

根据取消注释该行时的结果,听起来您可能还有另一个问题,但是File.Exists() 文档的这段摘录值得重复:

如果调用者没有足够的权限来读取指定的文件,则不抛出异常,并且无论路径是否存在,该方法都返回 false。

但是,大多数情况下,您应该首先避免打电话File.Exists()。文件系统是volatile,因此该函数通常会在您进行检查和尝试在代码中访问文件之间创建竞争条件。当然,随着竞争条件的发展,它通常非常温和,但它仍然存在,这意味着如果访问文件失败,您仍然需要一个 try/catch 块来处理异常。既然你无论如何都需要这个,为什么还要费心去检查呢?您可以通过跳过它来节省磁盘访问权限,并且通常有一种方法可以完全避免这种需要,例如使用FileMode.OpenOrCreate.

于 2016-05-16T02:45:07.550 回答