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

C# 使用C在metro应用程序中的计算机中搜索文件,c#,windows-8,microsoft-metro,C#,Windows 8,Microsoft Metro,我正在使用C和XAML开发metro应用程序,我们都知道,我们可以使用下面的代码在音乐库中搜索音乐文件 IReadOnlyList<IStorageItem> itemsList = await KnownFolders.MusicLibrary.GetItemsAsync(); 其他驱动器中的音乐文件呢D:,E:等。有没有办法在其他驱动器中搜索音乐文件? 简介:我想从我的硬盘中搜索.mp3文件并在Gridview中显示它们,有没有有效的方法来实现这一点?请帮助我。Windows

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

IReadOnlyList<IStorageItem> itemsList  = await KnownFolders.MusicLibrary.GetItemsAsync();
其他驱动器中的音乐文件呢D:,E:等。有没有办法在其他驱动器中搜索音乐文件?
简介:我想从我的硬盘中搜索.mp3文件并在Gridview中显示它们,有没有有效的方法来实现这一点?请帮助我。

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

可以在其他文件夹或驱动器中搜索,但需要使用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[] { };
}

应用程序还可以记住您使用FolderPicker选择的文件夹,请参阅我的帖子,我在那里解释了如何使用FutureAccessList…

谢谢你,祖贝尔,毫无疑问,我们可以使用FolderPicker获取文件,这是我第一次可以使用FolderPicker获取文件,当应用程序第二次启动时,我们可以从该路径自动获取文件。不完全确定你想说什么,让我为不准确而感到抱歉,如果我有pathE:\Mymusic,我们可以不使用FolderPicker从folderMymusic检索文件吗。不,你不能,Windows应用商店应用程序中不允许使用它