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
Conoscere le tecniche di programmazione asincrona per le app di Windows Runtime che usano JavaScript
Per informazioni su come scrivere app asincrone, vedi Guida introduttiva: Uso delle promesse in JavaScript.
Autorizzazioni di accesso al percorso
Il codice di questi esempi richiede la funzionalità relativa alla raccolta Immagini, tuttavia il tuo percorso potrebbe richiedere un'altra o nessuna funzionalità. Per altre informazioni, vedi l'argomento relativo ad accesso ai file e autorizzazioni. Per informazioni su come usare la selezione file per accedere a file e cartelle, vedi Guida introduttiva: Accesso a file con selezioni file.
Enumerare i file e le cartelle di livello superiore in un percorso
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.
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.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 aforEach
deve acquisire una voce di elenco come argomento e verrà eseguita ogniitem
nell'elencoPuoi elaborare ulteriormente ogni
item
chiamando i metodi singolarmente. Nell'esempio precedente, determiniamo seitem
è 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 supportooutput
, ma è analogamente possibile eseguire numerose altre attività.Per altro contesto e maggiori informazioni sulle funzioni
outputHeader
eoutput
, 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
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.
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.
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 mesi
monthList
. L'elenco viene elaborato chiamandomonthList.forEach
e definendo una funzione di elaborazione di ogni cartellamonth
.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) intempMonthName
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 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
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