Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 路径中的非法字符_C# - Fatal编程技术网

C# 路径中的非法字符

C# 路径中的非法字符,c#,C#,我正在尝试获取位于中的文件 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 =

我正在尝试获取位于中的文件

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); 
我在路径中得到非法字符

怎么了?文件存在且路径正确。在这条路上有什么是非法的

任何帮助都将不胜感激。

您的路径包括开头和结尾的“删除引号,一切都会好起来的。”


在VS Debugger中看到的开头和结尾的\“告诉我们引号在字符串中。

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

您可能应该从源头上解决这个问题,但您可以通过以下方法将其去除:

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

字符串的开头和结尾似乎都嵌入了引号(
)。这些引号不是必需的,而且是路径中的非法字符。如何使用路径初始化字符串

这可以从调试器可视化工具中看到,当字符串以
“\”
开头,以
\”
结尾时,它表明引号是字符串的一部分,而不应该是

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

或:


我通常会这样进入这条路

FileInfo fi = new FileInfo(@"C:\Program Files (x86)\test software\myapp\demo.exe"); 
是否在字符串开头注册了@?;-)

请尝试以下操作:

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


“C:/ProgramFiles(x86)/test software/myapp/demo.exe”

我已经尝试了
FileInfo fi=newfileinfo(@Path);
但我仍然遇到同样的问题。我不能像你说的那样做,因为我从其他地方获取路径并将其存储在字符串中。@ke3pup请检查这个作为答案,因为它解决了你的问题。这是在运行时用双引号内双引号保存文件的完美原因。谢谢你的解决方案。
FileInfo fi = new FileInfo(@"C:\Program Files (x86)\test software\myapp\demo.exe"); 
string path = @"C:\Program Files (x86)\test software\myapp\demo.exe";