c# Directory.GetDirectories 不包括文件夹

标签 c# getdirectories system.io.directory

我正在尝试遍历“c:\Users”中 Windows 中的用户文件夹列表,但不包括 Microsoft 内置用户文件夹,下面是我用来完成此壮举的代码段,但它是由于某种原因没有按预期工作。

private readonly List<String> _exclusion = new List<String>
                                                   {
                                                       "All Users",
                                                       "Default",
                                                       "LocalService",
                                                       "Public",
                                                       "Administrator",
                                                       "Default User",
                                                       "NetworkService"
                                                   };

public static bool FoundInArray(List<string> arr, string target)
{
    return arr.Exists(p => p.Trim() == target);
}

foreach (string d in Directory.GetDirectories(sDir).Where(d => !FoundInArray(_exclusion,d)))
{
    richTextBox1.Text += d + Environment.Newline;
}

我不确定为什么这不起作用,任何人都可以为我提供一些见解吗?

最佳答案

Directory.GetDirectories() 返回目录的完整路径,而不仅仅是目录的最后一部分。

虽然您可以去掉 GetDirectories() 返回的路径的最后一个组成部分并将其与数组中当前的内容进行比较,但这将导致误报和漏报。

相反,使用 Environment.SpecialFolders获取特定于当前用户和操作系统版本的给定特殊文件夹的路径。

private readonly List<String> _exclusion = new List<String>
{
    Environment.GetFolderPath(Environment.SpecialFolder.MyMusic),
    // etc.
}

关于c# Directory.GetDirectories 不包括文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10003440/

相关文章:

c# - IDictionary 到字符串

.net - DirectoryInfo.GetDirectories() 和属性

c# - 如何输出目录层次结构中的每个文件和文件夹

vb.net - 为什么无法继承IO.Directory?

c# - Directory.CreateDirectory 因无效字符而失败

c# - C#中如何抓取TCP数据包

c# - 为什么不推荐使用私有(private)访问器?

c# - System.IO.Directory.Delete方法只是将文件发送到回收站。有什么办法可以永久删除吗?

c# - 关于在 winphone 8.1 RT 中在 ContentDialogResult 中换行文本

c# 你如何线程递归目录搜索?