[英]How to detect that a file does not exist?
当文件路径无效时,第三方库会出错。 我们尝试使用File.Exists()
来处理这种情况,认为当文件路径包含无效字符时它将返回false,但它返回true 。
这很奇怪(见额外的空格和时期)
string wrong = "myfolder1\\myfolder2\\myfile.txt .";
bool x = File.Exists(wrong);
有没有办法清理文件路径?
new FileInfo(wrong).Name
不会清理它。
我们的主要目的是在将文件路径发送到第三方库之前可靠地确定文件路径是否有效。 我几乎觉得这个问题很愚蠢,因为我认为File.Exists()应该这样做。
(我们在.NET 4.0上)
Windows API会修剪文件名中的尾随句点和空格,如果它不是一个有效的句点。
有关详细信息,请参阅此msdn文章 。
不要使用空格或句点结束文件或目录名称。 虽然底层文件系统可能支持此类名称,但Windows shell和用户界面却不支持。 但是,可以将句点指定为名称的第一个字符。 例如,“。temp”。
我不知道它是否可行,但您可以通过使用\\\\?\\
前缀绕过shell,尝试File.Exists(@"\\\\?\\C:\\myfolder1\\myfolder2\\myfile.txt .");
并看看它是否有效(我现在无法测试这个时刻,如果它不让我知道,我将删除此部分。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.