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.

Реализации

Исключения

Вы указали значение, отличное от DefaultQuery , из перечисления CommonFileQuery для папки, которая не является папкой библиотеки. Проверьте значение запроса.

Примеры

В следующем примере показано, как получить JPG-файлы в папке "Изображения" пользователя и ее вложенных папках, отсортированных по дате CreateFileQueryWithOptions(QueryOptions) , путем вызова метода . Этот запрос является глубоким, так как папка является папкой библиотеки и указано значение, отличное от DefaultQuery из перечисления CommonFileQuery .

Перед выполнением следующего примера включите возможность "Библиотека рисунков" в файле манифеста приложения.

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

Комментарии

В следующих случаях этот запрос является неглубоким запросом, который возвращает только файлы в текущей папке:

  • Поведение этого метода по умолчанию, если ни один из следующих параметров не указан. Или:
  • Укажите DefaultQuery в качестве значения CommonFileQuery при создании экземпляра объекта QueryOptions . Или:
  • Укажите значение Shallow в качестве значения свойства FolderDepth объекта QueryOptions .

В следующих случаях этот запрос является глубоким запросом, который возвращает файлы из текущей папки и ее вложенных папок:

  • Для папки библиотеки при создании экземпляра объекта QueryOptions укажите значение, отличное от DefaultQuery, в качестве значения CommonFileQuery. Или:
  • Для любой папки укажите Deep в качестве значения свойства FolderDepthобъекта QueryOptions.

Совет

Некоторые значения перечисления CommonFileQuery можно использовать только с папкой библиотеки (например, с папкой "Изображения") или домашней группой. Несмотря на описанную выше формулировку ArgumentException , вы можете использовать параметры OrderByName и OrderBySearchRank (в дополнение к параметру DefaultQuery ) с папкой, которая не является папкой библиотеки.

Список методов, определяющих неглубокие запросы и глубокие запросы, см. в разделе Примечания в разделе GetFilesAsync.

Чтобы проверить, доступны ли параметры QueryOptions для текущей папки, вызовите метод AreQueryOptionsSupported папки. Чтобы проверить, доступен ли определенный CommonFileQuery , вызовите метод IsCommonFileQuerySupported папки.

Вы также можете асинхронно получить список файлов в текущей папке, вызвав один из методов GetFilesAsync .

Чтобы получить объект результата запроса, содержащий файлы в текущей папке без настройки объекта QueryOptions , вызовите один из методов CreateFileQuery .

Чтобы получить элементы, которые являются файлами или папками, вызовите метод CreateItemQueryWithOptions .

Примечание

Для Windows Server 2012 необходимо установить компоненты индексатора для использования некоторых QueryOptions, так как компоненты индексатора не установлены по умолчанию.

Применяется к

См. также раздел