File.Exists 为 Url 类型文件路径返回 false
本文关键字:路径 返回 false 文件 类型 Exists Url File | 更新日期: 2023-09-27 17:55:48
我必须处理像这样的文件路径
file:///My%20HD/files/06.%20test%20Lastname%20-%20test.mp3
该文件确实存在,我可以访问它。
但是 System.IO.File.Exist() 返回 false。
我想问题是文件路径格式。我该如何处理它?
使用 Uri.LocalPath 将文件 URL 转换为实际的文件路径,例如:
Uri uriAddress2 = new Uri(@"file:///h:/test.html");
Console.WriteLine(uriAddress2.LocalPath);
Console.WriteLine(File.Exists(uriAddress2.LocalPath));
文件 URL 不是有效的文件路径,无论是本地路径还是 UNC。 File.Exists
仅检查文件路径是否实际对应于真实文件。
事实上,正如Caramiriel在评论中指出的那样,Exist最终调用了NormalizePath,它明确拒绝URI,因为许多Win32 API无法处理它们。
File.Exit 的 Mono 版本与 .NET 一样,检查为特定路径检索的文件属性。 GetFileAttributes
是一个外部调用,最终可能会调用等效的 Win32 API 函数,因此文件 URL 将不起作用