如何检测文件不存在?

010*_*101 3 .net c#

当文件路径无效时,第三方库会出错.我们试图处理这种情况File.Exists(),认为当文件路径包含无效字符时它将返回false,但它返回true.

这很奇怪(见额外的空格和时期)

    string wrong = "myfolder1\\myfolder2\\myfile.txt      .";
    bool x = File.Exists(wrong);
Run Code Online (Sandbox Code Playgroud)

有没有办法清理文件路径?

new FileInfo(wrong).Name 不清理它.

我们的主要目的是在将文件路径发送到第三方库之前可靠地确定文件路径是否有效.我几乎觉得这个问题很愚蠢,因为我认为File.Exists()应该这样做.

(我们在.NET 4.0上)

Sco*_*ain 7

Windows API会修剪文件名中的尾随句点和空格,如果它不是一个有效的句点.

有关详细信息,请参阅此msdn文章.

不要使用空格或句点结束文件或目录名称.虽然底层文件系统可能支持此类名称,但Windows shell和用户界面却不支持.但是,可以将句点指定为名称的第一个字符.例如,".temp".


我不知道它是否会起作用,但你可以通过使用\\?\前缀来绕过shell ,试着File.Exists(@"\\?\C:\myfolder1\myfolder2\myfile.txt .");看看它是否有效(我现在无法测试这一刻,如果它不让我知道,我会删除此部分.)