StorageFolder.CreateFileQueryWithOptions(QueryOptions) Méthode

Définition

Obtient un objet de résultat de requête qui contient les fichiers dans le dossier actif et, éventuellement, dans les sous-dossiers du dossier actif. Les résultats sont basés sur les QueryOptions spécifiés.

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

Paramètres

queryOptions
QueryOptions

Critères appliqués à la requête.

Retours

Objet de résultat de requête qui contient les fichiers dans le dossier actif et, éventuellement, dans les sous-dossiers du dossier actif, filtré et trié en fonction des QueryOptions spécifiés. Appelez la méthode GetFilesAsync du résultat de la requête pour obtenir la liste plate des fichiers, triés comme spécifié par queryOptions. Cette méthode retourne une liste de type IReadOnlyList<StorageFile>. Chaque fichier est représenté par un élément de type StorageFile.

Implémente

Exceptions

Vous avez spécifié une valeur autre que DefaultQuery à partir de l’énumération CommonFileQuery pour un dossier qui n’est pas un dossier de bibliothèque. Vérifiez la valeur de la requête.

Exemples

L’exemple suivant montre comment obtenir les fichiers JPG dans le dossier Images de l’utilisateur et ses sous-dossiers, triés par date, en appelant la CreateFileQueryWithOptions(QueryOptions) méthode . Cette requête est une requête approfondie, car le dossier est un dossier de bibliothèque et une valeur autre que DefaultQuery de l’énumération CommonFileQuery est spécifiée.

Avant d’exécuter l’exemple suivant, activez la fonctionnalité Bibliothèque d’images dans le fichier manifeste de l’application.

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

Remarques

Dans les cas suivants, cette requête est une requête superficielle qui retourne uniquement les fichiers dans le dossier actif :

  • Comportement par défaut de cette méthode si aucune des options suivantes n’est spécifiée. Ou:
  • Spécifiez DefaultQuery comme valeur de CommonFileQuery lorsque vous instanciez l’objet QueryOptions . Ou:
  • Spécifiez Shallow comme valeur de la propriété FolderDepth de l’objet QueryOptions .

Dans les cas suivants, cette requête est une requête approfondie qui retourne des fichiers du dossier actif et de ses sous-dossiers :

  • Pour un dossier de bibliothèque, spécifiez une valeur autre que DefaultQuery comme valeur de CommonFileQuery lorsque vous instanciez l’objet QueryOptions . Ou:
  • Pour n’importe quel dossier, spécifiez Deep comme valeur de la propriété FolderDepth de QueryOptions.

Conseil

Certaines des valeurs de l’énumération CommonFileQuery ne peuvent être utilisées qu’avec un dossier de bibliothèque (comme la bibliothèque Images) ou le dossier de groupe résidentiel. Malgré la formulation de l’ArgumentException décrite ci-dessus, vous pouvez utiliser les options OrderByName et OrderBySearchRank (en plus de l’option DefaultQuery ) avec un dossier qui n’est pas un dossier de bibliothèque.

Pour obtenir la liste des méthodes qui identifient les requêtes superficielles et les requêtes approfondies, consultez remarques dans la rubrique GetFilesAsync.

Pour vérifier si les QueryOptions que vous souhaitez spécifier sont disponibles pour le dossier actif, appelez la méthode AreQueryOptionsSupported du dossier. Pour vérifier si un CommonFileQuery spécifique est disponible, appelez la méthode IsCommonFileQuerySupported du dossier.

Vous pouvez également obtenir une liste de fichiers dans le dossier actif de manière asynchrone en appelant l’une des méthodes GetFilesAsync .

Pour obtenir un objet de résultat de requête qui contient les fichiers dans le dossier actif sans configurer un objet QueryOptions , appelez l’une des méthodes CreateFileQuery .

Pour obtenir des éléments qui sont des fichiers ou des dossiers, appelez la méthode CreateItemQueryWithOptions .

Notes

Par Windows Server 2012, vous devez installer des composants d’indexeur pour utiliser des queryOptions, car les composants de l’indexeur ne sont pas installés par défaut.

S’applique à

Voir aussi