Guida introduttiva: Accesso ai file a livello di codice (HTML)

[ Questo articolo è rivolto agli sviluppatori per Windows 8.x e Windows Phone 8.x che realizzano app di Windows Runtime. Gli sviluppatori che usano Windows 10 possono vedere Documentazione aggiornata ]

Puoi accedere a file e cartelle che si trovano in un determinato percorso, ad esempio una cartella, una raccolta, un dispositivo o un percorso di rete. Puoi anche eseguire query appositamente costruite sui file e le cartelle in un percorso.

Prerequisiti

Enumerare i file e le cartelle di livello superiore in un percorso

  1. Recupera un StorageFolder che rappresenta il percorso.

    Se vuoi ottenere un elenco dei contenuti di una determinata cartella, devi innanzitutto recuperare un oggetto StorageFolder che ne rappresenti il percorso.

    L'esempio di enumerazione delle cartelle dimostra come recuperare la raccolta di immagini:

    var picturesLibrary = Windows.Storage.KnownFolders.picturesLibrary;
    

    Nell'esempio precedente, abbiamo usato KnownFolders per recuperare la raccolta Immagini (come oggetto StorageFolder). Puoi utilizzare le proprietà KnownFolders per recuperare le cartelle che rappresentano un gran numero di risorse utente, ad esempio librerie, dispositivi o percorsi di rete.

    Importante  Se desideri utilizzare una proprietà KnownFolders per accedere a una libreria, a un dispositivo oppure a un percorso di rete, l'app dovrà disporre della funzionalità corrispondente nel manifesto dell'app. Altre informazioni su accesso a file e funzionalità sono disponibili in Accesso ai file e autorizzazioni e in Accesso alle risorse utente mediante Windows Runtime.

     

  2. Recuperare un elenco dei contenuti di una cartella

    L'esempio di enumerazione delle cartelle dimostra come recuperare un elenco di elementi nella raccolta di immagini:

    picturesLibrary.getItemsAsync().then(function (items) {
    

    Come illustrato nell'esempio precedente, puoi chiamare getItemsAsync() per ottenere un elenco di tutto il contenuto della cartella (un oggetto StorageFolder). Se non vuoi recuperare tutti gli elementi, puoi chiamare getItemsAsync(startIndex, maxItemsToRetrieve) per ottenere i contenuti della cartella inclusi in un intervallo per indice.

    Quando chiami un metodo getItemsAsync per una cartella, l'elenco degli elementi da ricevere è limitato ai file e alle sottocartelle di quella cartella e non include i file e le cartelle contenuti in tali sottocartelle.

    Se vuoi recuperare un elenco dei file di una cartella, puoi chiamare un metodo getFilesAsync. Se vuoi recuperare un elenco dei file di una cartella, puoi chiamare un metodo getFoldersAsync.

    Usa then dopo l'operazione get per definire una funzione che accetta l'elenco degli oggetti ricevuti items nell'elenco precedente ed esegue ulteriori attività necessarie.

  3. Come usare l'elenco

    L'esempio di enumerazione delle cartelle dimostra come eseguire attività aggiuntive con un elenco di items nella raccolta di immagini:

    
        outputHeader(picturesLibrary.name, items.size);
        items.forEach(function (item) { 
            if (item.isOfType(Windows.Storage.StorageItemTypes.folder)) { 
                output(id(picturesLibrary.name), item.name + "\\"); 
            } 
            else { 
                output(id(picturesLibrary.name), item.fileName); 
            } 
        });
    

    L'esempio precedente passa la proprietà name della cartella e la proprietà size dell'elenco in una funzione di supporto che visualizza queste informazioni all'utente.

    Puoi inoltre ripetere in tutto l'elenco di elementi per eseguire ulteriori attività, come nell'esempio precedente. Puoi chiamare forEach per l'elenco di elementi per scorrere gli elementi dell'elenco. La funzione passata a forEach deve acquisire una voce di elenco come argomento e verrà eseguita ogni item nell'elenco

    Puoi elaborare ulteriormente ogni item chiamando i metodi singolarmente. Nell'esempio precedente, determiniamo se item è una cartella (oggetto StorageFolder) o un file (oggetto StorageFile) confrontando il risultato del metodo isOfType, presente sia per i file, sia per le cartelle, con il valore dell'enumerazione StorageItemTypes. Usiamo questo confronto per passare informazioni diverse sull'elemento alla funzione di supporto output, ma è analogamente possibile eseguire numerose altre attività.

    Per altro contesto e maggiori informazioni sulle funzioni outputHeader e output, scarica l'esempio di enumerazione delle cartelle.

Al termine, il codice dovrebbe risultare analogo al seguente:


// Get folder
var picturesLibrary = Windows.Storage.KnownFolders.picturesLibrary;

//  Get folder contents
picturesLibrary.getItemsAsync().then(function (items) {
    // Then perform tasks with the list of files and folders that was retrieved

    // For example, display name of containing folder and count of items in folder
    outputHeader(picturesLibrary.name, items.size);

    // For example, display info for each item
    items.forEach(function (item) { 
        if (item.isOfType(Windows.Storage.StorageItemTypes.folder)) { 
            output(id(picturesLibrary.name), item.name + "\\"); 
        } 
        else { 
            output(id(picturesLibrary.name), item.fileName); 
        } 
    }); 
});

Query su file in un percorso

  1. Recuperare la cartella contenitore

    Se vuoi ottenere un elenco dei contenuti di una determinata cartella, devi innanzitutto recuperare la cartella.

    L'esempio di enumerazione delle cartelle dimostra come recuperare la raccolta di immagini:

    var picturesLibrary = Windows.Storage.KnownFolders.picturesLibrary;
    

    Nell'esempio precedente, abbiamo usato KnownFolders per recuperare la raccolta Immagini (come oggetto StorageFolder). Puoi utilizzare le proprietà KnownFolders per recuperare le cartelle che rappresentano un gran numero di risorse utente, ad esempio librerie, dispositivi o percorsi di rete.

    Importante  Se desideri utilizzare una proprietà KnownFolders per accedere a una libreria, a un dispositivo oppure a un percorso di rete, l'app dovrà disporre della funzionalità corrispondente nel manifesto dell'app. Altre informazioni su accesso a file e funzionalità sono disponibili in Accesso ai file e autorizzazioni e in Accesso alle risorse utente mediante Windows Runtime.

     

  2. Creare una query su cartella per organizzare i file nel modo specificato

    Quando si crea una query su una cartella, i file e le sottocartelle che essa contiene vengono organizzati automaticamente in gruppi in base ai criteri specificati. I gruppi risultanti sono cartelle virtuali provviste di tutte le funzionalità di una cartella del file system e consentono di recuperare ed elaborare i file che contengono in base alle necessità.

    L'esempio di enumerazione delle cartelle dimostra come creare una query delle cartelle che raggruppi le immagini della raccolta di immagini in base al mese in cui sono state acquisite o create:

    var query = picturesLibrary.createFolderQuery(Windows.Storage.Search.CommonFolderQuery.groupByMonth);
    

    Come illustrato nell'esempio precedente, puoi chiamare createFolderQuery(query) per la cartella, per creare una query su cartella (oggetto StorageFolderQueryResult) per organizzare i file nella cartella e nelle sottocartelle nelle cartelle virtuali in base al valore di CommonFolderQuery specificato. Nell'esempio scegliamo di raggruppare i file di immagine nella cartella picturesLibrary in cartelle virtuali in base al mese (CommonFolderQuery.groupByMonth) di acquisizione o creazione dell'immagine.

    Puoi inoltre creare query su cartelle chiamando createFolderQuery() o createFolderQueryWithOptions.

  3. Recuperare l'elenco di cartelle virtuali dalla query

    L'esempio FolderEnumeration nella home page dell'app di esempio usa query per recuperare l'elenco di cartelle virtuali:

    
    query.getFoldersAsync().then(function (monthList) {
        monthList.forEach(function (month) { 
    

    Come illustrato nell'esempio precedente, puoi chiamare getFoldersAsync() nella query sulla cartella per recuperare un elenco delle cartelle virtuali. Usa then per definire una funzione che elabori l'elenco. La query dell'esempio restituisce un elenco di cartelle virtuali che rappresentano i mesimonthList. L'elenco viene elaborato chiamando monthList.forEach e definendo una funzione di elaborazione di ogni cartella month.

  4. Recuperare l'elenco di file della cartella virtuale

    L'esempio di enumerazione delle cartelle dimostra come usare la cartella month per recuperare un elenco delle immagini che sono state acquisite o create in quel mese specifico:

    
            var tempMonthName = month.name; 
            month.getFilesAsync().then(function (files) {
    

    Suggerimento  Potrebbe essere necessario archiviare le informazioni sulla cartella virtuale (month) in modo da poterle usare in seguito. Nell'esempio precedente, archiviamo il nome della cartella virtuale (month.name) in tempMonthName in modo da poterla usare per l'elaborazione dell'elenco di immagini (files).

     

    Usa then per definire una funzione che elabori l'elenco di file ricevuti.

Al termine, il codice dovrebbe risultare analogo al seguente:


// Get folder
var picturesLibrary = Windows.Storage.KnownFolders.picturesLibrary; 

// Create query
var query = picturesLibrary.createFolderQuery(Windows.Storage.Search.CommonFolderQuery.groupByMonth); 

// Get virtual folders from query
query.getFoldersAsync().then(function (monthList) { 
    monthList.forEach(function (month) {
 
        var tempMonthName = month.name;
        // Get files from virtual folder 
        month.getFilesAsync().then(function (files) { 
            // Then perform tasks with retrieved files
        }); 
    }); 
});

Riepilogo e passaggi successivi

Per informazioni sulla lettura e la scrittura di file, vedi Guida introduttiva: Lettura e scrittura di un file, oltre all'esempio di accesso ai file. Per altre informazioni sull'uso dei file immagine, vedi Come selezionare e visualizzare un'immagine o Come decodificare un'immagine e l'argomento relativo all'uso di un blob per salvare e caricare un esempio di contenuto.

Per informazioni su come accedere a file tramite selezione file, vedi Guida introduttiva: Accesso a file con selezioni file.

Argomenti correlati

Accesso a dati e file

Accesso ai file e autorizzazioni

Guida introduttiva: Accesso a file con selezione file

Guida introduttiva: Lettura e scrittura di un file

Esempio di ricerca dei file a livello di programma

Esempio di enumerazione delle cartelle

Esempio di accesso a file

Uso di un blob per salvare e caricare un esempio di contenuto

Riferimenti

Windows.Storage.KnownFolders class

Windows.Storage.StorageFile class

Windows.Storage.StorageFolder class

Windows.Storage.StorageItemTypes enum

Windows.Storage.Search.CommonFolderQuery enum

Windows.Storage.Search.StorageFolderQueryResult class