StorageFolder.CreateFileQueryWithOptions(QueryOptions) 方法

定义

获取一个查询结果对象,该对象包含当前文件夹中的文件以及当前文件夹的子文件夹中的文件(可选)。 结果基于指定的 QueryOptions

public:
 virtual StorageFileQueryResult ^ CreateFileQueryWithOptions(QueryOptions ^ queryOptions) = CreateFileQueryWithOptions;
StorageFileQueryResult CreateFileQueryWithOptions(QueryOptions const& queryOptions);
public StorageFileQueryResult CreateFileQueryWithOptions(QueryOptions queryOptions);
function createFileQueryWithOptions(queryOptions)
Public Function CreateFileQueryWithOptions (queryOptions As QueryOptions) As StorageFileQueryResult

参数

queryOptions
QueryOptions

应用于查询的条件。

返回

一个查询结果对象,该对象包含当前文件夹中的文件以及当前文件夹的子文件夹中的文件(可选),根据指定的 QueryOptions 进行筛选和排序。 调用查询结果的 GetFilesAsync 方法以获取按 queryOptions 指定的排序的文件的平面列表。 此方法返回 IReadOnlyList<StorageFile> 类型的列表。 每个文件由 StorageFile 类型的项表示。

实现

例外

您从 CommonFileQuery 枚举中为不是库文件夹的文件夹指定了 DefaultQuery 以外的值。 检查 查询的值。

示例

以下示例演示如何通过调用 CreateFileQueryWithOptions(QueryOptions) 方法获取用户的 Pictures 文件夹及其子文件夹中的 JPG 文件(按日期排序)。 此查询是深层查询,因为文件夹是库文件夹,并且指定了 CommonFileQuery 枚举中的 DefaultQuery 以外的值。

在运行以下示例之前,请在应用清单文件中启用 图片库 功能。

using Windows.Storage;
using Windows.Storage.Search;
using System.Threading.Tasks;
using System.Diagnostics; // For writing results to Output window.

// Get the user's Pictures folder.
// Enable the corresponding capability in the app manifest file.
StorageFolder picturesFolder = KnownFolders.PicturesLibrary;

// Set options for file type and sort order.
List<string> fileTypeFilter = new List<string>();
fileTypeFilter.Add(".jpg");
QueryOptions queryOptions = new QueryOptions(CommonFileQuery.OrderByDate, fileTypeFilter);

// Get the JPG files in the user's Pictures folder
// and its subfolders and sort them by date.
StorageFileQueryResult results = picturesFolder.CreateFileQueryWithOptions(queryOptions);

// Iterate over the results and print the list of files
// to the Visual Studio Output window.
IReadOnlyList<StorageFile> sortedFiles = await results.GetFilesAsync();
foreach (StorageFile item in sortedFiles)
{
    Debug.WriteLine(item.Name + ", " + item.DateCreated);
}
IAsyncAction MainPage::ExampleCoroutineAsync()
{
    // Get the users's Pictures folder.
    // Enable the Pictures Library capability in the app manifest file.
    Windows::Storage::StorageFolder picturesFolder{ Windows::Storage::KnownFolders::PicturesLibrary() };

    // Set options for file type and sort order.
    Windows::Storage::Search::QueryOptions queryOptions{ Windows::Storage::Search::CommonFileQuery::OrderByDate, { L".png" } };

    // Get the png files in the user's Pictures folder and its subfolders, sorted by date.
    Windows::Storage::Search::StorageFileQueryResult results{ picturesFolder.CreateFileQueryWithOptions(queryOptions) };

    Windows::Foundation::Collections::IVectorView<Windows::Storage::StorageFile> filesInFolder{
        co_await results.GetFilesAsync() };

    // Iterate over the results, and print the list of files to the Visual Studio output window.
    for (StorageFile const& fileInFolder : filesInFolder)
    {
        std::wstring output{ fileInFolder.Name() };
        ::OutputDebugString(output.c_str());
    }
}
//Get the users's pictures folder
//Enable the corresponding capability in the app manifest file
StorageFolder^ picturesFolder = KnownFolders::PicturesLibrary;

//Set options for file type and sort order
Platform::Collections::Vector<String^>^ fileTypeFilter = ref new Platform::Collections::Vector<String^>();
fileTypeFilter->Append(".jpg");
QueryOptions^ queryOptions = ref new QueryOptions(Windows::Storage::Search::CommonFileQuery::OrderByDate, fileTypeFilter);

//Get the JPG files in the user's pictures folder 
//and its subfolders and sort them by date
StorageFileQueryResult^ results = picturesFolder->CreateFileQueryWithOptions(queryOptions);

create_task(results->GetFilesAsync()).then([=](IVectorView<StorageFile^>^ filesInFolder) 
{
    //Iterate over the results and print the list of files
    // to the visual studio output window
    for (auto it = filesInFolder->First(); it->HasCurrent; it->MoveNext())
    {
             StorageFile^ file = it->Current;
             String^ output = file->Name + "\n";
             OutputDebugString(output->Begin());
    }
});

注解

在以下情况下,此查询是仅返回当前文件夹中的文件的浅表查询:

在以下情况下,此查询是一个深层查询,它从当前文件夹及其子文件夹中返回文件:

提示

CommonFileQuery 枚举中的某些值只能与库文件夹 (如图片库) 或家庭组文件夹一起使用。 尽管有上述 ArgumentException 的措辞,但除了 DefaultQuery 选项 (之外,还可以使用 OrderByNameOrderBySearchRank 选项) 非库文件夹的文件夹。

有关标识浅层查询和深层查询的方法列表,请参阅 GetFilesAsync 主题中的“备注”。

若要检查要指定的 QueryOptions 是否可用于当前文件夹,请调用该文件夹的 AreQueryOptionsSupported 方法。 若要检查特定 CommonFileQuery 是否可用,请调用文件夹的 IsCommonFileQuerySupported 方法。

还可以通过调用 GetFilesAsync 方法之一异步获取当前文件夹中的文件列表。

若要在不配置 QueryOptions 对象的情况下获取包含当前文件夹中文件的查询结果对象,请调用 CreateFileQuery 方法之一。

若要获取属于文件或文件夹的项,请调用 CreateItemQueryWithOptions 方法。

注意

对于Windows Server 2012,必须安装索引器组件才能使用某些 QueryOptions,因为默认情况下未安装索引器组件。

适用于

另请参阅