如何基于Windows 8商店应用程序递归读取C#中的文件和文件夹?

时间:2013-01-21 19:38:03

标签: c# windows-8 windows-store-apps

此示例仅返回文件夹中的顶级文件:

var myFiles = await tempFolder.GetFilesAsync();

但是如何递归获取文件或文件夹? 这是javascript答案,它使用的是QueryOptions,但这不是C#

中的一个选项

Javascript verison of this question

1 个答案:

答案 0 :(得分:1)

恕我直言,GetFilesAsync采用CommonFileQuery枚举并不是那么直观和有点令人困惑,但它们的价值根本没有表明它们的真正含义。

MSDN记录它,但如果你不开始为每个方法阅读MSDN,它仍然会令人困惑。 CommonFileQuery enumeration

这些只返回顶级文件:

var myFiles = await tempFolder.GetFilesAsync();
var myFiles = await tempFolder.GetFilesAsync(CommonFileQuery.DefaultQuery);

虽然这些其他枚举值将执行递归文件列表,加上命令列表,所以它确实做了两件事。

var myFilesRecursive = await tempFolder.GetFilesAsync(CommonFileQuery.OrderByName);
var myFilesRecursive = await tempFolder.GetFilesAsync(CommonFileQuery.OrderByDate);

似乎只有在进行递归(深度)查询时才能对列表进行排序。

对我而言,以这种方式实施它并没有多大意义,因此将其作为Q& A用于其他人。

这样的事情可能更有用和直观:

var myPreferredFileList = await tempFolder.GetFilesAsync(CommonFileQuerySort.OderByName, CommonFileQueryView.Deep);