UWP C#从所选文件夹中获取所有文件

时间:2017-04-23 09:49:06

标签: c# uwp filepicker argumentexception

我正在尝试使用UWP和C#获取所选文件夹中所有文件的列表。我需要选择一个文件夹并显示该文件夹中的所有音频文件(包括根文件夹的子文件夹

我有以下代码:

        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());
        }

但是,一旦我选择了文件夹,我就会收到以下错误:

System.ArgumentException: 'Value does not fall within the expected range.'

我选择的文件夹包含大约100个MP3文件

有谁知道我做错了什么?

提前致谢

1 个答案:

答案 0 :(得分:1)

似乎是CommonFileQuery.OrderByDate的已知问题。显然,您只能将CommonFileQuery.OrderByDate与KnownFolders枚举中的文件夹一起使用。如果我更改你的代码以使用CommonFileQuery.DefaultQuery它就可以工作。

https://social.msdn.microsoft.com/Forums/vstudio/en-US/f99384d9-5460-4fd4-8c70-5694e1370432/a-exception-is-happen-when-calling-getfilesasync-with-parameter-of-commonfilequeryorderbydate?forum=wpdevelop

如果订单不按日期顺序返回,您可以按如下方式使用OrderBy:

foreach (StorageFile item in sortedFiles.OrderBy(a => a.DateCreated))