路径中有非法字符

17

我正在尝试访问位于

C:\Program Files (x86)\test software\myapp\demo.exe

在VS调试器中,我看到的路径是:

"\"C:\\\Program Files (x86)\\\test software\\\myapp\\\demo.exe\""

当我将其打印出来时,我在控制台中看到:

"C:\Program Files (x86)\test software\myapp\demo.exe"

但是当我尝试像这样做时

FileInfo fi = new FileInfo(PathMentionedAbove); 

我收到了“路径中包含非法字符”的错误消息。

问题在哪里?文件存在,路径也是正确的。这个路径上面有什么非法字符吗?

非常感谢任何帮助。

6个回答

20
你的路径包含开头和结尾的引号。去掉引号,就可以了。
在VS Debugger中看到的开头和结尾的\"告诉我们这些引号实际上是字符串中的引号。

这就是在运行时保存带有双引号的文件的完美原因。感谢您提供的解决方案。 - Arun Prasad

10

试试这个:

string path = @"C:\Program Files (x86)\test software\myapp\demo.exe";

7
您似乎在字符串的开头和结尾嵌入了引号(")。这些不是必要的,并且在路径中是非法字符。您是如何使用路径初始化字符串的?
可以从调试器可视化器中看到这一点,因为字符串以 "\" 开始并以 \"" 结束,显示引号是该字符串的一部分,但它们不应该是。
您可以采用两种方法 - 常规转义字符串(使用 \)或逐字字符串文字(以 @ 开始)。
  string str = "C:\\Program Files (x86)\\test software\\myapp\\demo.exe";

或者:

  string verbatim = @"C:\Program Files (x86)\test software\myapp\demo.exe";

6

该字符串被双引号包围。是的,在路径中这不是一个有效的字符。

你应该从源头上解决它,但你可以使用以下方法去掉双引号:

        path = path.Replace("\"", "");

@ke3pup 请检查此答案,因为它解决了您的问题。 - Jim G.

0

我通常会像这样输入路径...

FileInfo fi = new FileInfo(@"C:\Program Files (x86)\test software\myapp\demo.exe"); 

你在字符串开头注册了 @ 吗?;-)

我已经尝试过<code>FileInfo fi = new FileInfo(@Path);</code>,但我仍然遇到同样的问题。我不能按照你说的去做,因为我从其他地方获取路径并将其存储在字符串中。 - ke3pup

0

尝试

"C:/Program Files (x86)/test software/myapp/demo.exe"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接