C# 使用有效路径时,是什么导致NotSupportedException(“不支持给定路径的格式”)?
我正在编写一个简单的控制台应用程序,它将从测试文件中读取xml并将其反序列化为对象C# 使用有效路径时,是什么导致NotSupportedException(“不支持给定路径的格式”)?,c#,.net,C#,.net,我正在编写一个简单的控制台应用程序,它将从测试文件中读取xml并将其反序列化为对象 var s = File.ReadAllBytes("G:\\Temp\\Publishing\\2.txt"); Stream _response = File.OpenRead("G:\\Temp\\Publishing\\2.txt"); var s = File.ReadAllBytes(@"g:\temp\publishing\2.txt"); var s = File.ReadAllBytes(
var s = File.ReadAllBytes("G:\\Temp\\Publishing\\2.txt");
Stream _response = File.OpenRead("G:\\Temp\\Publishing\\2.txt");
var s = File.ReadAllBytes(@"g:\temp\publishing\2.txt");
var s = File.ReadAllBytes(@"G:\Temp\Publishing\2.txt");
我尝试了以上所有方法来读取该文件,它总是抛出带有消息的NotSupportedException
不支持给定路径的格式
上述路径中的格式错误是什么?根据参考源:
如果路径中
:
的索引位于第三位置或更高位置,则将抛出不支持异常。(人们希望:
是第二个字符)您确定源代码中没有零宽度组合字符或其他类似的Unicode骗局吗?此外,不相关,您使用ReadAllBytes
而不是获取路径的StreamReader
并调用ReadToEnd()
,有什么原因吗?或者更好的办法是,将路径直接加载到您得到的XML解析代码中(例如,XElement.Load(string)
?@MatthewHaugen:问题是它们都会抛出错误。我会反驳说,“当ReadAllBytes做您真正想要的事情时,为什么要使用StreamReader?”@BillyONeal touché。我读得太快了。很抱歉。删除我的评论。至于你的第二点,我完全同意,但我认为这可能是调试的一个有益步骤。这似乎是一个奇怪的问题,所以可能会有一个奇怪的解决方案。更不用说,如果OP不知道这两种选择,我更愿意将它们带来对于一些不是最好的解决方法的事情,你可以尝试不同的方法。@MatthewHaugen:“尝试不同的事情”通常不是一个好的调试策略。@LibinTK我会尝试删除并重新键入整个路径。也不要从任何地方复制它。如果像Billy ONeal建议的那样有零宽度字符,您可能在每行之间复制它。我只是用string\u path=@检查了索引G:\Temp\Publishing\2.txt;int i=path.IndexOf(“:”);
,
的索引竟然是2。但是如何/为什么?我从Windows资源管理器中复制了路径,它导致了一些我仍然理解的事情,在路径字符串中添加了未知/隐藏字符,并将:
推到第三位。我已经重新键入了完整的路径,它可以工作。@LibinTK我粘贴了你的示例Into Visual Studio,将其保存为文本文件,并在文本编辑器中打开。在“和”之间有一个U+202A从左到右嵌入
字符。很好地发现了@BillyONeal!!:-)@LibinTK谢谢,为我节省了很多时间!从Windows资源管理器复制时引发了此错误。手动键入后,一切正常。