Compartir a través de


StorageFolder.CreateFileQueryWithOptions(QueryOptions) Método

Definición

Obtiene un objeto de resultado de consulta que contiene los archivos de la carpeta actual y, opcionalmente, en las subcarpetas de la carpeta actual. Los resultados se basan en queryOptions especificados.

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

Criterios que se aplican a la consulta.

Devoluciones

Objeto de resultado de consulta que contiene los archivos de la carpeta actual y, opcionalmente, en las subcarpetas de la carpeta actual, filtradas y ordenadas en función de queryOptions especificada. Llame al método GetFilesAsync del resultado de la consulta para obtener la lista plana de archivos, ordenada según lo especificado por queryOptions. Este método devuelve una lista de tipo IReadOnlyList<StorageFile>. Cada archivo se representa mediante un elemento de tipo StorageFile.

Implementaciones

Excepciones

Especificó un valor distinto de DefaultQuery de la enumeración CommonFileQuery para una carpeta que no es una carpeta de biblioteca. Compruebe el valor de la consulta.

Ejemplos

En el ejemplo siguiente se muestra cómo obtener los archivos JPG en la carpeta Pictures del usuario y sus subcarpetas, ordenadas por fecha, llamando al CreateFileQueryWithOptions(QueryOptions) método . Esta consulta es una consulta profunda porque la carpeta es una carpeta de biblioteca y se especifica un valor distinto de DefaultQuery de la enumeración CommonFileQuery .

Antes de ejecutar el ejemplo siguiente, habilite la funcionalidad Biblioteca de imágenes en el archivo de manifiesto de la aplicación.

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

Comentarios

En los casos siguientes, esta consulta es una consulta superficial que devuelve solo los archivos de la carpeta actual:

  • Comportamiento predeterminado de este método si no se especifica ninguna de las siguientes opciones. O:
  • Especifique DefaultQuery como valor de CommonFileQuery al crear una instancia del objeto QueryOptions . O:
  • Especifique Superficial como valor de la propiedad FolderDepth del objeto QueryOptions .

En los casos siguientes, esta consulta es una consulta profunda que devuelve archivos de la carpeta actual y de sus subcarpetas:

  • Para una carpeta de biblioteca, especifique un valor distinto de DefaultQuery como valor de CommonFileQuery al crear una instancia del objeto QueryOptions . O:
  • Para cualquier carpeta, especifique Deep como el valor de la propiedad FolderDepth de QueryOptions.

Sugerencia

Algunos de los valores de la enumeración CommonFileQuery solo se pueden usar con una carpeta de biblioteca (como la biblioteca imágenes) o la carpeta Grupo hogar. A pesar de la redacción de argumentException descrita anteriormente, puede usar las opciones OrderByName y OrderBySearchRank (además de la opción DefaultQuery ) con una carpeta que no sea una carpeta de biblioteca.

Para obtener una lista de métodos que identifican consultas poco profundas y consultas profundas, vea los comentarios del tema GetFilesAsync.

Para comprobar si queryOptions que desea especificar están disponibles para la carpeta actual, llame al método AreQueryOptionsSupported de la carpeta. Para comprobar si hay disponible una commonFileQuery específica, llame al método IsCommonFileQuerySupported de la carpeta.

También puede obtener una lista de archivos en la carpeta actual de forma asincrónica llamando a uno de los métodos GetFilesAsync .

Para obtener un objeto de resultado de consulta que contenga los archivos de la carpeta actual sin configurar un objeto QueryOptions , llame a uno de los métodos CreateFileQuery .

Para obtener elementos que son archivos o carpetas, llame al método CreateItemQueryWithOptions .

Nota:

Para Windows Server 2012, debe instalar componentes del indexador para usar algunos queryOptions porque los componentes del indexador no están instalados de forma predeterminada.

Se aplica a

Consulte también