使用C#在metro应用程序中搜索机器中的文件

时间:2012-11-18 12:44:38

标签: c# windows-8 microsoft-metro

我正在使用C#和XAML开发metro应用程序,我们都知道我们可以使用下面的代码搜索音乐库中的音乐文件。

IReadOnlyList<IStorageItem> itemsList  = await KnownFolders.MusicLibrary.GetItemsAsync();

D:E:等其他驱动器(分区)中的音乐文件怎么样?有没有办法在其他驱动器中搜索音乐文件? 简要说明:我想从我的硬盘驱动器中搜索.mp3个文件并在Gridview中显示它们,有没有有效的方法来实现这一目标?请帮帮我。

3 个答案:

答案 0 :(得分:0)

Windows应用商店应用仅限于在应用的KnownFolders或LocalFolder中进行搜索,因此您无法在其他驱动器中进行搜索

答案 1 :(得分:0)

可以在其他文件夹或驱动器中搜索,但需要使用FolderPicker来选择StorageFolder ......

async Task<IEnumerable<StorageFile>> FindMusicFiles()
{
    var folderPicker = new FolderPicker()
    {
        CommitButtonText = "Yippie!",
        SuggestedStartLocation = PickerLocationId.ComputerFolder,
        ViewMode = PickerViewMode.List
    };

    folderPicker.FileTypeFilter.Add("*");
    StorageFolder folder = await folderPicker.PickSingleFolderAsync();

    if (folder != null)
    {
       StorageFileQueryResult queryResult = folder.CreateFileQuery();
       queryResult.ApplyNewQueryOptions(new QueryOptions(CommonFileQuery.OrderByName, new[] { ".mp3" }));
       IReadOnlyList<StorageFile> files = await queryResult.GetFilesAsync();
       return files;
    }

    return new StorageFile[] { };
}

答案 2 :(得分:0)

应用程序也可以记住您使用FolderPicker选择的文件夹,请参阅Windows 8 App and access to file system上的帖子,其中我已经解释了如何使用FutureAccessList ......