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, так как компоненты индексатора не установлены по умолчанию.