UWP C# 从选定文件夹中获取所有文件
UWP C# Getting All Files From Selected Folder
我正在尝试使用 UWP 和 C# 获取 selected 文件夹中所有文件的列表。我需要select一个文件夹并显示该文件夹中的所有音频文件(包括根文件夹的子文件夹
我有以下代码:
var folderPicker = new FolderPicker();
folderPicker.SuggestedStartLocation = PickerLocationId.Desktop;
folderPicker.FileTypeFilter.Add("*");
StorageFolder folder = await folderPicker.PickSingleFolderAsync();
List<string> fileTypeFilter = new List<string>();
fileTypeFilter.Add(".mp3");
fileTypeFilter.Add(".mp3");
fileTypeFilter.Add(".wma");
fileTypeFilter.Add(".wav");
fileTypeFilter.Add(".ogg");
fileTypeFilter.Add(".flac");
fileTypeFilter.Add(".aiff");
fileTypeFilter.Add(".aac");
QueryOptions queryOptions = new QueryOptions(CommonFileQuery.OrderByDate, fileTypeFilter);
StorageFileQueryResult results = folder.CreateFileQueryWithOptions(queryOptions);
IReadOnlyList<StorageFile> sortedFiles = await results.GetFilesAsync();
foreach (StorageFile item in sortedFiles)
{
AudioFilesLV.Items.Add(item.Path.ToString());
}
但是一旦我 select 文件夹,我得到以下错误:
System.ArgumentException: 'Value does not fall within the expected range.'
我正在 select 的文件夹包含大约 100 个 MP3 文件
有谁知道我做错了什么吗?
提前致谢
似乎是 CommonFileQuery.OrderByDate 的一个已知问题。显然,您只能将 CommonFileQuery.OrderByDate 与 KnownFolders 枚举中的文件夹一起使用。如果我将您的代码更改为使用 CommonFileQuery.DefaultQuery 它会起作用。
如果他们没有按日期顺序返回,您可以按如下方式使用 OrderBy:
foreach (StorageFile item in sortedFiles.OrderBy(a => a.DateCreated))
我正在尝试使用 UWP 和 C# 获取 selected 文件夹中所有文件的列表。我需要select一个文件夹并显示该文件夹中的所有音频文件(包括根文件夹的子文件夹
我有以下代码:
var folderPicker = new FolderPicker();
folderPicker.SuggestedStartLocation = PickerLocationId.Desktop;
folderPicker.FileTypeFilter.Add("*");
StorageFolder folder = await folderPicker.PickSingleFolderAsync();
List<string> fileTypeFilter = new List<string>();
fileTypeFilter.Add(".mp3");
fileTypeFilter.Add(".mp3");
fileTypeFilter.Add(".wma");
fileTypeFilter.Add(".wav");
fileTypeFilter.Add(".ogg");
fileTypeFilter.Add(".flac");
fileTypeFilter.Add(".aiff");
fileTypeFilter.Add(".aac");
QueryOptions queryOptions = new QueryOptions(CommonFileQuery.OrderByDate, fileTypeFilter);
StorageFileQueryResult results = folder.CreateFileQueryWithOptions(queryOptions);
IReadOnlyList<StorageFile> sortedFiles = await results.GetFilesAsync();
foreach (StorageFile item in sortedFiles)
{
AudioFilesLV.Items.Add(item.Path.ToString());
}
但是一旦我 select 文件夹,我得到以下错误:
System.ArgumentException: 'Value does not fall within the expected range.'
我正在 select 的文件夹包含大约 100 个 MP3 文件
有谁知道我做错了什么吗?
提前致谢
似乎是 CommonFileQuery.OrderByDate 的一个已知问题。显然,您只能将 CommonFileQuery.OrderByDate 与 KnownFolders 枚举中的文件夹一起使用。如果我将您的代码更改为使用 CommonFileQuery.DefaultQuery 它会起作用。
如果他们没有按日期顺序返回,您可以按如下方式使用 OrderBy:
foreach (StorageFile item in sortedFiles.OrderBy(a => a.DateCreated))