File.Exists总是返回False c#

时间:2016-05-16 02:38:39

标签: c# system.io.file

我搜索过所有相关内容和重复内容,但要么没有回复,要么使用其他方法或其他语言。文件和路径都存在,而且更多,我觉得这是在我的鼻子底下。代码在这里。

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对象时,我收到错误声明" 不支持给定路径的格式"。我真正想做的就是检查文件是否存在。

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:-2)

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

  

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

但是,大多数情况下,您应该首先避免调用File.Exists()。文件系统是易失性,因此此功能通常会在您进行检查和尝试在代码中访问文件之间创建竞争条件。当然,由于竞争条件通常非常温和,但它仍然存在,这意味着如果访问文件失败,你仍然需要一个try / catch块来处理异常。既然你还需要这个,为什么还要费心去检查呢?您可以通过跳过来保存自己的磁盘访问权限,并且通常可以避免这种需要,例如使用FileMode.OpenOrCreate