使用System.IO,我尝试了以下代码:
string[] files = Directory.GetFiles("\\folder\\folder_2\\folder_3");
并得到以下例外:
“System.IO.DirectoryNotFoundException - 无法找到部分路径'C:\ folder \ folder_2 \ folder_3)'”
我不知道为什么“c:\”被添加到原始字符串中,我似乎无法保持该方法不这样做。我做错了什么?
非常感谢任何帮助。
答案 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。
编辑:看到其他用户建议您使用@的评论,它是一样的。对不起,早些时候没看到。
答案 2 :(得分:1)
您需要遍历路径中的每个起始反斜杠,只转义一个斜杠。使用正确的转义:
string[] files = Directory.GetFiles("\\\\folder\\folder_2\\folder_3");
或者您可以使用逐字字符串文字:
string[] files = Directory.GetFiles(@"\\folder\folder_2\folder_3");
中的完整说明