在下面的代码中,我有两个变量,一个是currentDirectoryPath
,另一个是rootPath
。我想使用Directory.GetDirectories()
函数枚举这两个根路径中的所有子文件夹。但是当我通过currentDirectoryPath
时,代码工作正常,但是不使用 rootPath.
我有一个例外:
NotSupportedException:不支持给定路径的格式。
我已经用两个路径测试了代码:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
string currentDirectoryPath = Directory.GetCurrentDirectory();
string rootPath = "C:\\Users\\Ravi.Reddy\\Desktop\\Practise";
string[] dirs1 = Directory.GetDirectories(
currentDirectoryPath,
"*.*",
SearchOption.AllDirectories);
foreach (var dir in dirs1)
Console.WriteLine(dir);
string[] dirs2 = Directory.GetDirectories( // <- Exception here
rootPath,
"*.*",
SearchOption.AllDirectories);
foreach (var dir in dirs2)
Console.WriteLine(dir);
Console.ReadLine();
}
}
}
我希望Directory.GetDirectories()
应该使用提供的路径,并且应该枚举所有子文件夹。
答案 0 :(得分:4)
您有一个不正确 rootPath
,只需看看 damp :
using System.Linq;
...
// Copy + Paste from the question
string rootPath = "C:\\Users\\Ravi.Reddy\\Desktop\\Practise";
Console.Write(string.Join(Environment.NewLine,
rootPath.Select(c => $"\\u{(int)c:x4} : {c}")));
结果:
\u202a :
\u0043 : C
\u003a : :
\u005c : \
\u0055 : U
\u0073 : s
\u0065 : e
\u0072 : r
\u0073 : s
...
请注意\u202a
字符(LEFT-TO-RIGHT EMBEDDING)不能出现在有效路径中。您要做的就是重新键入 "C:
片段,以消除不可见左右嵌入符号。