如果文件夹包含空格,如何处理文件路径中的空格?

时间:2011-06-29 13:38:57

标签: c# .net file-io console-application

public static void launchProcess(string processName, string arguments, out string output)
{
    Process p = new Process
    {
        StartInfo = { UseShellExecute = false, RedirectStandardOutput = true, FileName = processName, Arguments = arguments }
    };

    p.Start();
    output = p.StandardOutput.ReadToEnd();
    p.WaitForExit();

}

如果我的参数包含文件名,如:

D:\Visual Studio Projects\ProjectOnTFS\ProjectOnTFS

然后我收到错误:

3 个答案:

答案 0 :(得分:11)

它需要双打引号,但也可能需要@来对待字符串逐字(verbatim string),即“\”在字符串中具有特殊含义,例如\ t表示一个标签,所以我们要忽略\

不仅是双引号,还有@

string myArgument = @"D:\Visual Studio Projects\ProjectOnTFS\ProjectOnTFS";

答案 1 :(得分:5)

我在大多数应用程序中使用以下内容(如果需要),如果有空格,则在字符串的开头和结尾添加双引号。

public string AddQuotesIfRequired(string path)
{
    return !string.IsNullOrWhiteSpace(path) ? 
        path.Contains(" ") && (!path.StartsWith("\"") && !path.EndsWith("\"")) ? 
            "\"" + path + "\"" : path : 
            string.Empty;
}

<强> 实例..

AddQuotesIfRequired(@"D:\Visual Studio Projects\ProjectOnTFS\ProjectOnTFS");

返回"D:\Visual Studio Projects\ProjectOnTFS\ProjectOnTFS"

AddQuotesIfRequired(@"C:\Test");

返回C:\Test

AddQuotesIfRequired(@"""C:\Test Test\Wrap""");

返回"C:\Test Test\Wrap"

AddQuotesIfRequired(" ");

返回空字符串

AddQuotesIfRequired(null);

返回空字符串

编辑

根据建议,更改了函数的名称,并添加了空引用检查。

添加了检查以查看字符串的开头和结尾是否已存在双引号,以免重复。

将字符串检查功能更改为IsNullOrWhiteSpace以检查空格以及空或空,如果是,则返回空字符串。

答案 2 :(得分:2)

我意识到这是一个老线程,但对于那些在我之后看到这个的人,你也可以这样做:

string myArgument="D:\\Visual Studio Projects\\ProjectOnTFS\\ProjectOnTFS"

通过转义反斜杠,您不必使用@符号。只是另一种选择。