Directory.GetFiles改变字符串路径

时间:2015-03-31 21:08:38

标签: c#

使用System.IO,我尝试了以下代码:

string[] files = Directory.GetFiles("\\folder\\folder_2\\folder_3");

并得到以下例外:

  

“System.IO.DirectoryNotFoundException - 无法找到部分路径'C:\ folder \ folder_2 \ folder_3)'”

我不知道为什么“c:\”被添加到原始字符串中,我似乎无法保持该方法不这样做。我做错了什么?

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:3)

路径开头的反斜杠(\)使其成为绝对路径。如果您想要相对路径,请删除第一个\

string[] files = Directory.GetFiles("folder\\folder_2\\folder_3");

答案 1 :(得分:1)

除了提供的答案之外,您还可以使用逐字字符串文字,它将完全传递字符串,而无需使用所有杂乱的反斜杠进行转义。

在你的情况下,这将是

string[] files = Directory.GetFiles(@"folder\folder_2\folder_3");

请注意,@在引号之外,但坚持开头的引号,这告诉C#使用它,(原谅双关语)字面意思。此类字符串的语法突出显示也将在Visual Studio中更改,仅限FYI。

编辑:看到其他用户建议您使用@的评论,它是一样的。对不起,早些时候没看到。

Read about them here at MSDN

答案 2 :(得分:1)

您需要遍历路径中的每个起始反斜杠,只转义一个斜杠。使用正确的转义:

string[] files = Directory.GetFiles("\\\\folder\\folder_2\\folder_3");

或者您可以使用逐字字符串文字:

string[] files = Directory.GetFiles(@"\\folder\folder_2\folder_3");

MSDN Documentation

中的完整说明