路上的非法人物

ke3*_*pup 15 c#

我想找到一个位于的文件

C:\Program Files (x86)\test software\myapp\demo.exe
Run Code Online (Sandbox Code Playgroud)

在VS调试器中,我将路径视为:

"\"C:\\\Program Files (x86)\\\test software\\\myapp\\\demo.exe\""
Run Code Online (Sandbox Code Playgroud)

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

"C:\Program Files (x86)\test software\myapp\demo.exe"
Run Code Online (Sandbox Code Playgroud)

但是当我尝试类似的东西时

FileInfo fi = new FileInfo(PathMentionedAbove); 
Run Code Online (Sandbox Code Playgroud)

我在路上得到了非法角色.

怎么了?文件存在且路径正确.在这条道路上有什么不合法的?

任何帮助,将不胜感激.

Jay*_*ard 19

你的路径包括"在开头和结尾.删除引号,它就没问题了.

在VS Debugger中看到的开头和结尾是告诉我们引号字面意思在字符串中的原因.


Mar*_*sen 10

试试这个:

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


Han*_*ant 7

该字符串被双引号括起来.是的,这不是路径中的有效字符.

您可能应该在源头处理它,但您可以使用以下方法将其删除:

        path = path.Replace("\"", "");
Run Code Online (Sandbox Code Playgroud)


Ode*_*ded 6

您似乎"在字符串的开始和结尾处都带有引号()。这些不是必需的,并且是路径中的非法字符。您如何使用路径初始化字符串?

从调试器可视化器可以看到这一点,因为字符串以开头"\"和结尾\"",表明引号是字符串的一部分,而引号不应该是引号。

您可以做两件事-常规的转义字符串(使用\)或逐字字符串文字(以开头@):

  string str = "C:\\Program Files (x86)\\test software\\myapp\\demo.exe";
Run Code Online (Sandbox Code Playgroud)

要么:

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