c# - 在 Windows 应用商店应用程序中递归获取文件和文件夹

标签 c# file recursion windows-runtime windows-store-apps

以前在 Windows 窗体应用程序中,this这就是我递归搜索文件夹中所有文件的方式。我知道 Windows 应用商店应用程序几乎都是沙盒化的,但是必须有一种方法可以获取 KnownFolder 目录中的所有文件。我一直在尝试对音乐目录执行此操作。但是,它对我不起作用。我已经完成了谷歌搜索,但找不到任何说明如何实现这一目标的线程。我尝试了以下代码:

private async void dirScan(string dir)
    {
        var folDir = await StorageFolder.GetFolderFromPathAsync(dir);
        foreach (var d in await folDir.GetFoldersAsync())
        {
            foreach(var f in await d.GetFilesAsync())
            {
                knownMusicDir.Add(f.Path.ToString());
            }
            dirScan(d.ToString());
        }
    }

我希望有人能看看我的代码并希望能更正它。提前致谢!

最佳答案

您可以使用此扩展方法:

public static async Task<IEnumerable<StorageFile>> GetAllFilesAsync(this StorageFolder folder)
{
        IEnumerable<StorageFile> files = await folder.GetFilesAsync();
        IEnumerable<StorageFolder> folders = await folder.GetFoldersAsync();
        foreach (StorageFolder subfolder in folders)
            files = files.Concat(await subfolder.GetAllFilesAsync());
        return files;
}

关于c# - 在 Windows 应用商店应用程序中递归获取文件和文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22251625/

相关文章:

c# - Azure Application Insights 自定义响应指标

ruby - 使用 rspec 进行测试时,对于非空文件,File.read 为空

c - 在C中实现递归调用时遇到问题

c - 使用递归删除给定数字倍数的节点【C 编程】

c# - 递归循环驱动器并替换非法字符

c# - ICommand Execute() 任务.ContinueWith()

C# 通过引用使用对象的方法

c# - 如何将sql查询重写为linq

javascript - PHP/Javascript - 从巨大的日志文件中实时读取添加的行

android - 在android应用程序中逐行读取文本文件