我必须处理像
这样的文件路径file:///My%20HD/files/06.%20test%20Lastname%20-%20test.mp3
该文件确实存在,我可以访问它。
但是System.IO.File.Exist()返回false。
我猜问题是文件路径格式。我怎么处理它?
答案 0 :(得分:1)
使用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在评论中指出的那样,Exists最终调用NormalizePath明确拒绝URI,因为许多Win32 API无法处理它们
File.Exits的Mono版本,就像.NET一样,checks为特定路径检索的文件属性。 GetFileAttributes
是一个外部调用,可能最终调用等效的Win32 API函数,因此文件URL将无法正常工作