Compartilhar via


StorageFolder.CreateFileQueryWithOptions(QueryOptions) Método

Definição

Obtém um objeto de resultado de consulta que contém os arquivos na pasta atual e, opcionalmente, nas subpastas da pasta atual. Os resultados são baseados nas QueryOptions especificadas.

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

Parâmetros

queryOptions
QueryOptions

Os critérios aplicados à consulta.

Retornos

Um objeto de resultado de consulta que contém os arquivos na pasta atual e, opcionalmente, nas subpastas da pasta atual, filtrados e classificados com base nas QueryOptions especificadas. Chame o método GetFilesAsync do resultado da consulta para obter a lista simples de arquivos, classificada conforme especificado por queryOptions. Esse método retorna uma lista do tipo IReadOnlyList<StorageFile>. Cada arquivo é representado por um item do tipo StorageFile.

Implementações

Exceções

Você especificou um valor diferente de DefaultQuery da enumeração CommonFileQuery para uma pasta que não é uma pasta de biblioteca. Verifique o valor da consulta.

Exemplos

O exemplo a seguir mostra como obter os arquivos JPG na pasta Imagens do usuário e suas subpastas, classificadas por data, chamando o CreateFileQueryWithOptions(QueryOptions) método . Essa consulta é uma consulta profunda porque a pasta é uma pasta de biblioteca e um valor diferente de DefaultQuery da enumeração CommonFileQuery é especificado.

Antes de executar o exemplo a seguir, habilite a funcionalidade Biblioteca de Imagens no arquivo de manifesto do aplicativo.

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

Comentários

Nos seguintes casos, essa consulta é uma consulta superficial que retorna apenas arquivos na pasta atual:

  • Comportamento padrão desse método se nenhuma das opções a seguir for especificada. Ou:
  • Especifique DefaultQuery como o valor de CommonFileQuery ao instanciar o objeto QueryOptions . Ou:
  • Especifique Shallow como o valor da propriedade FolderDepth do objeto QueryOptions .

Nos casos a seguir, essa consulta é uma consulta profunda que retorna arquivos da pasta atual e de suas subpastas:

Dica

Alguns dos valores da enumeração CommonFileQuery só podem ser usados com uma pasta de biblioteca (como a biblioteca Imagens) ou a pasta Grupo Doméstico. Apesar da redação da ArgumentException descrita acima, você pode usar as opções OrderByName e OrderBySearchRank (além da opção DefaultQuery ) com uma pasta que não é uma pasta de biblioteca.

Para obter uma lista de métodos que identifica consultas superficiais e consultas profundas, consulte os Comentários no tópico GetFilesAsync.

Para verificar se as QueryOptions que você deseja especificar estão disponíveis para a pasta atual, chame o método AreQueryOptionsSupported da pasta. Para verificar se um CommonFileQuery específico está disponível, chame o método IsCommonFileQuerySupported da pasta.

Você também pode obter uma lista de arquivos na pasta atual de forma assíncrona chamando um dos métodos GetFilesAsync .

Para obter um objeto de resultado de consulta que contém os arquivos na pasta atual sem configurar um objeto QueryOptions , chame um dos métodos CreateFileQuery .

Para obter itens que são arquivos ou pastas, chame o método CreateItemQueryWithOptions .

Observação

Para Windows Server 2012, você deve instalar componentes do indexador para usar algumas QueryOptions porque os componentes do indexador não estão instalados por padrão.

Aplica-se a

Confira também