C# 如何检测文件不存在?

C# 如何检测文件不存在?,c#,.net,C#,.net,当文件路径无效时,第三方库出错。我们试图使用File.Exists()处理这种情况,认为当文件路径包含无效字符时,它将返回false,但将返回true 这很奇怪(请参阅额外的空格和句点) 有没有清理文件路径的方法 newfileinfo(错误)。Name不会清除它 我们的主要目的是在将文件路径发送到第三方库之前可靠地确定其是否有效。我几乎觉得问这个问题很愚蠢,因为我认为File.Exists()应该这样做 (我们使用的是.NET 4.0)如果不是句点,windows API会从文件名中删除尾随句

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

这很奇怪(请参阅额外的空格和句点)

有没有清理文件路径的方法

newfileinfo(错误)。Name
不会清除它

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


(我们使用的是.NET 4.0)

如果不是句点,windows API会从文件名中删除尾随句点和空格

有关更多信息,请参阅

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



我不知道它是否有效,但是您可以使用
\\?\
前缀绕过shell,尝试
File.Exists(@“\\?\C:\myfolder1\myfolder2\myfile.txt”)
看看这是否有效(如果它不让我知道,我现在无法测试,我将删除此部分。)

我将查看正则表达式。替换:静态版本:我不理解这个问题。您说:“我们在路径X处有一个文件。虽然路径X看起来很奇怪,但该文件在资源管理器中的X处明显存在,并且
file.exists(X)
返回
true
。现在,当我们将字符串X提供给它需要路径的库时,该库爆炸”。你到底想做什么?为了让图书馆开心,改变一条系统认为正确的路径?那么你想把路径改成什么呢?我想我刚刚发现了一个错误Windows资源管理器:如果我把一个文件重命名为它的名字+尾随点,这个文件就会消失。但该文件实际上仍然存在,具有相同的名称,并在F5之后重新出现。当文件路径包含无效字符时,您的示例不包含任何非法字符。;-)@JustAnotherUsers如果句点是文件名中的最后一个字符,您可能知道它是非法字符。@CodeCaster关于
File.Exists
的API正在修剪尾随句点和空格这一事实有什么不正确之处?这个问题不是关于文件的创建,而是关于是否存在的测试。另外,我在引用中所说的话与您所说的一模一样:“尽管底层文件系统可能支持此类名称,但Windows shell和用户界面不支持。”file.Exists通过shell,therfor修剪字符。另请参阅有关路径是否有效的问题:
    string wrong = "myfolder1\\myfolder2\\myfile.txt      .";
    bool x = File.Exists(wrong);