C#代码中路径中的非法字符

时间:2014-02-10 09:47:39

标签: c#

您在下面的代码中收到错误,因为路径中存在非法字符,如何清除?

string pathway = System.IO.File.ReadAllText(@"D:\\Project\\SMCCampaignmgmt\\trunk\\Run\\smccampaignwindows.exe.config");
XmlDocument doc = new XmlDocument();
doc.Load(pathway);

4 个答案:

答案 0 :(得分:5)

字符串开头的@字符表示您声明了 literal 字符串,您无需将其转义。

使用\代替\\,或者删除@符号。


在测试之后,看起来双反斜杠实际上不会抛出此异常,Windows似乎足够聪明,可以忽略额外的\。但是,您似乎加载了另一个用于加载XML文件的路径,即

string pathway = ...

问题很可能出在此文件路径中(您的示例中未显示)。该路径中包含无效字符,或者可能是由于您在如何读取文件时出现编码问题。


实际上在进一步审核您的代码时,您似乎正在尝试加载app.config文件。 XDocument的{​​{3}}方法需要文件路径,而不是原始XML。您有2个选项,通过直接传递文件路径正确使用Load

doc.Load("D:\\Project\\SMCCampaignmgmt\\trunk\\Run\\smccampaignwindows.exe.config")

或保留代码,但调用Load方法

string pathway = System.IO.File.ReadAllText(@"D:\\Project\\SMCCampaignmgmt\\trunk\\Run\\smccampaignwindows.exe.config");
XmlDocument doc = XmlDocument.Parse(pathway);

答案 1 :(得分:2)

如果使用@来转义整个字符串,则不应在该字符串内手动转义\。

答案 2 :(得分:0)

我在这条路上看不到任何非法字符,但是给它一个去吧

doc.Save(@"D:\Project\SMCCampaignmgmt\trunk\Run\smccampaignwindows.exe.config");

答案 3 :(得分:0)

在途径中加载整个文件(ReadAllText)。非法字符可能在该文件的内容中(即在D:\ Project \ SMCCampaignmgmt \ trunk \ Run \ smccampaignwindows.exe.config中)