【发布时间】:2022-01-01 00:44:57
【问题描述】:
您好,我正在尝试搜索以特定路径中的给定字符序列开头的所有文件和文件夹。 (路径由用户给定,顺序也是如此)。
为此,我一直在使用Directory.GetFiles 和Directory.GetDirectories 方法。
但是,当我在未定义搜索选项的情况下进行搜索时,它不会返回所有可能找到的文件/文件夹。所以我添加了SearchOption.AllDirectiories 参数,但是当它存在时,该函数不会返回任何内容。
这是我的代码:
try
{
// Search for directories
foreach (string d in Directory.GetDirectories(path, $"{param}*", SearchOption.AllDirectories))
{
Console.WriteLine(d);
found_directories.Add(d);
}
Console.WriteLine("");
// Search for files
foreach (string f in Directory.GetFiles(path, $"{param}*", SearchOption.AllDirectories))
{
Console.WriteLine(f);
found_files.Add(f);
}
}
catch (UnauthorizedAccessException)
{
// Some directories cannot be accessed and hence cause the program to crash
// So it's neccesary to catch the error
}
break;
我已经看过这些帖子(对我没有帮助):
Directory.GetFiles Not returning a file
Directory.GetFiles(path, ".txt", SearchOption.AllDirectories); doesn't deliver a file
Directory.GetFiles - SearchOption.AllDirectories Does not give files in subfolders (vb)
【问题讨论】:
-
忘了解释,最后的break语句是有的,因为所有这些代码都是在switch语句的情况下运行的。
-
{param}是否包含点? -
param的值是什么?当我将其设置为空时,一切正常。 -
@JeroenvanLangen 不,它不是,它是用户输入的序列,例如:“abc”,我在末尾添加了通配符,因此它会查找以该序列开头的文件
-
Console.WriteLine()不会导致无限循环,您目前发布的任何代码也不会导致,因此看起来其他地方存在问题。
标签: c#