Condividi tramite


StorageFolder.CreateFileQueryWithOptions(QueryOptions) Metodo

Definizione

Ottiene un oggetto risultato della query contenente i file nella cartella corrente e, facoltativamente, nelle sottocartelle della cartella corrente. I risultati sono basati su QueryOptions specificati.

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

Parametri

queryOptions
QueryOptions

Criteri applicati alla query.

Restituisce

Oggetto risultato della query contenente i file nella cartella corrente e, facoltativamente, nelle sottocartelle della cartella corrente, filtrato e ordinato in base all'oggetto QueryOptions specificato. Chiamare il metodo GetFilesAsync del risultato della query per ottenere l'elenco flat di file, ordinati come specificato da queryOptions. Questo metodo restituisce un elenco di tipo IReadOnlyList<StorageFile>. Ogni file è rappresentato da un elemento di tipo StorageFile.

Implementazioni

Eccezioni

È stato specificato un valore diverso da DefaultQuery dall'enumerazione CommonFileQuery per una cartella che non è una cartella di libreria. Controllare il valore della query.

Esempio

Nell'esempio seguente viene illustrato come ottenere i file JPG nella cartella Immagini dell'utente e nelle relative sottocartelle, ordinati in base alla data, chiamando il CreateFileQueryWithOptions(QueryOptions) metodo . Questa query è una query approfondita perché la cartella è una cartella di libreria e un valore diverso da DefaultQuery dall'enumerazione CommonFileQuery .

Prima di eseguire l'esempio seguente, abilitare la funzionalità Raccolta immagini nel file manifesto dell'app.

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

Commenti

Nei casi seguenti, questa query è una query superficiale che restituisce solo i file nella cartella corrente:

  • Comportamento predefinito di questo metodo se non sono specificate le opzioni seguenti. O:
  • Specificare DefaultQuery come valore di CommonFileQuery quando si crea un'istanza dell'oggetto QueryOptions . O:
  • Specificare Shallow come valore della proprietà FolderDepth dell'oggetto QueryOptions .

Nei casi seguenti, questa query è una query approfondita che restituisce file dalla cartella corrente e dalle relative sottocartelle:

  • Per una cartella di libreria, specificare un valore diverso da DefaultQuery come valore di CommonFileQuery quando si crea un'istanza dell'oggetto QueryOptions . O:
  • Per qualsiasi cartella, specificare Deep come valore della proprietà FolderDepth di QueryOptions.

Suggerimento

Alcuni dei valori dell'enumerazione CommonFileQuery possono essere usati solo con una cartella di libreria (ad esempio la libreria Immagini) o la cartella Homegroup. Nonostante la parola di ArgumentException descritta in precedenza, è possibile usare le opzioni OrderByName e OrderBySearchRank (oltre all'opzione DefaultQuery ) con una cartella che non è una cartella della libreria.

Per un elenco di metodi che identificano query superficiali e query profonde, vedere le osservazioni nell'argomento GetFilesAsync.

Per verificare se QueryOptions da specificare sono disponibili per la cartella corrente, chiamare il metodo AreQueryOptionsSupported della cartella. Per verificare se è disponibile un commonFileQuery specifico, chiamare il metodo IsCommonFileQuerySupported della cartella.

È anche possibile ottenere un elenco di file nella cartella corrente in modo asincrono chiamando uno dei metodi GetFilesAsync .

Per ottenere un oggetto risultato query contenente i file nella cartella corrente senza configurare un oggetto QueryOptions , chiamare uno dei metodi CreateFileQuery .

Per ottenere elementi che sono file o cartelle, chiamare il metodo CreateItemQueryWithOptions .

Nota

Per Windows Server 2012, è necessario installare i componenti dell'indicizzatore per l'uso di alcune QueryOptions perché i componenti dell'indicizzatore non sono installati per impostazione predefinita.

Si applica a

Vedi anche