【问题标题】:How to get a list of directories and sub directories C# WPF如何获取目录和子目录的列表 C# WPF
【发布时间】:2013-11-18 16:01:17
【问题描述】:

如何从根目录中获取所有子目录及其子目录(直到没有子目录)的列表。

我当前的代码使用 FolderBrowserDialog(WPF 没有,所以我必须从 winforms 获取它),并从那里尝试横向目录。到目前为止,我只能使其横向 1 级深度,如

如果音乐目录设置为

\rock\metallica\ride the lightning
\rock\aerosmith\
\rock\something\

如果用户选择\rock\,它只会从aerosmith、something、metalica 中抓取文件,而不是metalica 的子目录,骑着闪电。

private void btnAddTestFile_Click(object sender, RoutedEventArgs e)
{
    string[] files;
    FolderBrowserDialog dlg = new FolderBrowserDialog();

    DialogResult result = dlg.ShowDialog();
    if (result.ToString() == "OK")
    {
        InitializePropertyValues();


        files = System.IO.Directory.GetFiles(dlg.SelectedPath, "*.mp3");
        foreach (string file in files)
        {
            lstvTrackList.Items.Add(new TrackList{ ID = lstvTrackList.Items.Count.ToString(), TrackName = Regex.Match(file, @".*\\(.*).mp3").Groups[1].Value, TrackPath = file });
        }

        System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(dlg.SelectedPath);
        foreach (System.IO.DirectoryInfo d in di.GetDirectories())
        {
            files = System.IO.Directory.GetFiles(d.FullName, "*.mp3");
            foreach (string file in files)
            {
                lstvTrackList.Items.Add(new TrackList{ ID = lstvTrackList.Items.Count.ToString(), TrackName = Regex.Match(file, @".*\\(.*).mp3").Groups[1].Value, TrackPath = file });
            }
        }
    }
}

基本上我尝试做的是首先从根目录添加所有松散文件,然后获取根目录中的目录列表并添加这些文件。

如果我知道如何从根目录开始爬取所有子目录,我想我可以弄清楚,但我不太明白如何实现这一点。

是否有任何提示、提示或示例代码允许您指定一个根目录,然后爬取每个目录(保留一个字符串数组),直到找不到更多子目录,这样我就可以从每个目录中抓取文件?

【问题讨论】:

    标签: c# wpf directory


    【解决方案1】:

    要获取所有子目录,您必须将SearchOption 作为第三个参数传递,这也将返回所有子目录。

    Directory.GetFiles("","",SearchOption.AllDirectories);
    

    SearchOption

    • SearchOption.AllDirectories:在搜索操作中包括当前目录及其所有子目录。此选项包括重新解析点,例如搜索中的已安装驱动器和符号链接。
    • SearchOption.TopDirectoryOnly:仅包含当前目录 搜索操作。

    【讨论】:

    • 谢谢,我不知道该函数是否通过文件过滤器超载。不看msdn上的功能感觉有点傻。
    猜你喜欢
    • 1970-01-01
    • 2020-07-24
    • 2011-04-22
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多