File.ReadAllLines将可执行路径添加到提供的路径之前

时间:2020-04-22 06:52:46

标签: c# file io path file-read

我遇到了一个非常奇怪的错误。甚至很奇怪,以至于对我来说这似乎是个小虫,但是我知道什么。

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

  string[] lines = File.ReadAllLines(path);

到目前为止非常简单。我读取的路径位于C驱动器上,因此其格式如下: C:\ Folder \ Folder \ File.txt

Putting a break-point at the above line and hovering over the path variable shows the correct path

在这里变得很奇怪。如果我实际运行此代码,则会得到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方法的问题。有人知道这是怎么回事吗?

1 个答案:

答案 0 :(得分:1)

重现了您的问题,但只能通过复制问题中错误消息所写的路径来做到这一点。

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

您需要修改路径的来源,或者如果它是文字,则只需删除"C:\部分,然后再次写入即可。

您可以通过以下方式查看此信息:

Encoding.UTF8.GetString(path)

据我所知,它是Unicode#8234,如下所示:

enter image description here

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

enter image description here

相关问题