C# File.ReadAllLines将可执行路径前置到提供的路径

C# File.ReadAllLines将可执行路径前置到提供的路径,c#,file,io,path,file-read,C#,File,Io,Path,File Read,我遇到了一个非常奇怪的错误。奇怪到让我觉得它像一只虫子,但我知道什么呢 我在代码中使用File.ReadAllLines(path)方法,如下所示: string[] lines = File.ReadAllLines(path); 到目前为止,一切都很简单。我读取的路径在我的C驱动器上,因此其格式如下:C:\Folder\Folder\File.txt 这就是它变得奇怪的地方。如果我真的运行这段代码,我会得到一个IOException,它会通知我一个无效路径。它显示的路径似乎是我的应用

我遇到了一个非常奇怪的错误。奇怪到让我觉得它像一只虫子,但我知道什么呢

我在代码中使用File.ReadAllLines(path)方法,如下所示:

  string[] lines = File.ReadAllLines(path);
到目前为止,一切都很简单。我读取的路径在我的C驱动器上,因此其格式如下:C:\Folder\Folder\File.txt

这就是它变得奇怪的地方。如果我真的运行这段代码,我会得到一个IOException,它会通知我一个无效路径。它显示的路径似乎是我的应用程序可执行位置的路径+我传递给该方法的路径

'C:\Users\kingv\Projects\C\AUDS\Bsp2\bin\Debug\netcoreapp3.1\‪C:\Users\kingv\Projects\C\#\AUDS\data\asc1k.txt

使用File.ReadAllText方法时也会发生此错误

更奇怪的是,这似乎是一个特定于项目的问题。我在这个解决方案中有两个项目。除了很少的差异,它们有完全相同的代码,与我的问题相关的代码也完全相同(路径的声明和读取)


我以前从未遇到过File.ReadAllLines方法的问题。有人知道这里发生了什么吗?

重现了您的问题,但只能通过复制问题中错误消息所写的路径来实现

您的路径在开头有一个非法字符,因此它不被视为绝对的根路径,而是被视为相对路径

您需要修改路径的源代码,或者如果它是一个文本,只需删除
“C:\
部分并再次写入即可

您可以通过以下方式看到这一点:

Encoding.UTF8.GetString(path)
据我所知,它是Unicode#8234,类似这样:

在使用chrome的开发者工具检查元素内容时也可以看到这一点:


我从“文件属性”窗口中获取了源字符串。显然,我在那里复制了一些非法字符。仅替换起始字符没有帮助,但是重写整个路径确实解决了问题。非常感谢,非常有趣的问题。