Gestione dei file, dall'inizio alla fine

[ 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 ]

Scopri come aggiungere funzionalità per la gestione dei file alla tua app di Windows Store scritta in JavaScript e in esecuzione su Windows 8.1.

In ogni sezione di questo argomento è descritta una funzionalità fondamentale per la gestione dei file con link ad argomenti con ulteriori dettagli e informazioni su come trovare velocemente il codice rilevante nell'esempio correlato di gestione dei file.

Nota  Molte funzioni usate per interagire con cartelle e file sono asincrone. Per informazioni su come scrivere app asincrone in JavaScript, vedi Programmazione asincrona in JavaScript.

 

Operazioni fondamentali di accesso ai file: enumerazione, recupero di proprietà, lettura e scrittura di dati

icona passaggio Guida introduttiva: Accesso ai file a livello di codice

Puoi accedere ai file che si trovano in una cartella, una raccolta, un dispositivo o un percorso di rete con una singola riga di codice, ovvero una chiamata alla funzione StorageFolder.getFilesAsync. Vedi Accesso ai file a livello di codice per istruzioni dettagliate che illustrano come eseguire attività come l'enumerazione dei file e delle cartelle di primo livello per un percorso specificato e il recupero tramite query dei file in una determinata posizione.

I passaggi seguenti illustrano come enumerare i file in una determinata posizione:

  1. Acquisisci un oggetto StorageFolder per la posizione che desideri. Per eseguire questa operazione puoi ad esempio fare riferimento a una delle proprietà KnownFolders statiche come KnowFolders.picturesLibrary.
  2. Chiama la funzione StorageFolder.getFilesAsync dell'oggetto StorageFolder restituito. L'esempio correlato a questo argomento chiama tale metodo senza parametri per indicare che devono essere restituiti tutti i file. Per esempi di chiamata a StorageFolder.getFilesAsync con una query, vedi Guida introduttiva: Accesso ai file a livello di programmazione.
  3. Una volta completa la funzione StorageFolder.getFilesAsync, puoi usare un ciclo forEach per eseguire l'iterazione su ogni file restituito.

Questo esempio di codice enumera tutti i file nella raccolta Immagini (Pictures).


// Get a StorageFolder object representing Pictures.
var library = Windows.Storage.KnownFolders.picturesLibrary;

// Get all files from the StorageFolder object.
library.getFilesAsync().then(function (files) {
    // For each file found ...
    files.forEach(function (file) {
        // ... perform your processing.
        });
    });
}

Questa cattura di schermata dell'esempio correlato mostra un esempio di enumerazione dei file nella raccolta Immagini.

Cattura di schermata dell'esempio di gestione dei file relativa all'enumerazione dei file nella raccolta Immagini.

Posizione nell'esempio: l'esempio include una pagina intitolata FileAccessBasics che contiene gli esempi presentati in questa sezione. Il codice rilevante JavaScript e HTML è centralizzato nei file FileAccessBasicsPage.js (funzione OnEnumPicturesClick) e FileAccessBasicsPage.html.

icona passaggio

Guida introduttiva: Acquisizione delle proprietà di un file

Le proprietà dei file descrivono o quantificano un attributo di un file o il relativo contenuto. Le proprietà dei file includono ad esempio dati come il nome del file, il percorso, le dimensioni, gli attributi, la data dell'ultimo accesso. L'argomento Guida introduttiva: Acquisizione delle proprietà di un file illustra come recuperare e visualizzare le proprietà di primo livello e di base di un file.

Questi passaggi mostrano come ottenere le proprietà file di primo livello o di base:

Questo esempio di codice enumera tutti i file nella raccolta Immagini e ne visualizza varie proprietà di primo livello e di base. Nota come vengono usate le promises JavaScript per sincronizzare i risultati di due operazioni asincrone (StorageFolder.getFilesAsync e StorageFile.getBasicPropertiesAsync). Per altre informazioni sulla programmazione asincrona e le promises in JavaScript, vedi Programmazione asincrona in JavaScript.


// Get a StorageFolder object representing the Pictures Library.
var library = Windows.Storage.KnownFolders.picturesLibrary;

// Initialize string that holds all property information.
var outString = "";

// Get all files from the StorageFolder object.
library.getFilesAsync().then(function (files) {
    var promises = [];
    files.forEach(function (file) {
        promises.push(WinJS.Promise.as(file));
        promises.push(file.getBasicPropertiesAsync());
    })
    return WinJS.Promise.join(promises);
})
.done(function (results) {
    var counter = 0

    while (counter < results.length) {
        var file = results[counter];
        var props = results[counter + 1];
        outString += "File name: " + file.name + "<br/>";
        outString += "File type: " + file.fileType + "<br/>";
        outString += "File size: " + props.size + "<br/>";
        outString += "<br/>"
        counter = counter + 2;
    }
});

Questa cattura di schermata dell'esempio correlato mostra un esempio di recupero delle proprietà file di primo livello e di base.

Cattura di schermata dell'esempio di gestione dei file relativa al recupero delle proprietà dei file.

Posizione nell'esempio: l'esempio include una pagina intitolata FileAccessBasics che contiene gli esempi presentati in questa sezione. Il codice rilevante JavaScript e HTML è centralizzato nei file FileAccessBasicsPage.js (funzione OnGetFilePropertiesClick) e FileAccessBasicsPage.html.

icona passaggio

Guida introduttiva: Lettura e scrittura di un file

La lettura e la scrittura da un'app di Windows Store vengono eseguite tramite la classe FileIO. Vedi Guida introduttiva: Lettura e scrittura di un file per esempi di codice che illustrano come leggere e scrivere vari tipi di dati tramite le classi FileIO e StorageFile.

Dn595121.wedge(it-it,WIN.10).gifScrittura di testo in un file

  1. Per scrivere in un file, devi prima acquisire un oggetto StorageFile da passare a una delle funzioni FileIO per la scrittura dei dati. Nell'esempio correlato questa operazione viene eseguita creando un file tramite la funzione StorageFolder.createFileAsync.
  2. Una volta ottenuto un oggetto StorageFile, puoi scrivere il testo nel relativo file sottostante tramite una delle funzioni FileIO.writeTextAsync con overload.
Questo esempio di codice scrive la data e l'ora correnti in un file di esempio.

// Create the sample file; replacing it if it already exists.
var lib = Windows.Storage.KnownFolders.picturesLibrary;
lib.createFileAsync("FileHandlingJs.txt", 
    Windows.Storage.CreationCollisionOption.replaceExisting)
.then(function (file) {
    if (file) {
        // Format a string based on the current data/time.
        var now = new Date();
        var sampleFileContents = 
            [[now.getMonth() + 1, now.getDate(), now.getFullYear()].join("/"),
            [now.getHours(), AddZero(now.getMinutes())].join(":"),
            now.getHours() >= 12 ? "PM" : "AM"].join(" ");

        // Write the text to the sample file.
        Windows.Storage.FileIO.writeTextAsync(file, sampleFileContents)
        .then(function () {
            // File's contents have been written at this point.
        }, 
        function (error) {
            // Handle error.
        });
    }
});

Dn595121.wedge(it-it,WIN.10).gifLettura di testo da un file

  1. Per leggere il contenuto di un file, devi prima acquisire un oggetto StorageFile da passare a una delle funzioni FileIO per la lettura dei dati. Nell'esempio correlato questa operazione viene eseguita chiamando la funzione StorageFolder.getFileAsync.
  2. Una volta ottenuto un oggetto StorageFile, puoi leggere il testo dal relativo file sottostante tramite una delle funzioni FileIO.readTextAsync con overload.
Questo esempio di codice legge il contenuto da un file di esempio.

// Open sample file.
Windows.Storage.KnownFolders.picturesLibrary.getFileAsync("FileHandlingJs.txt")
.then(function (file) {
    // If file found ...
    if (file) {
        // Read file's contents.
        Windows.Storage.FileIO.readTextAsync(file).then(function (contents) {
            // Process file contents as needed.
        });
    }
}, function (error) {
    // Handle error.
});

Questa cattura di schermata mostra un esempio di esecuzione con la scrittura nel file di esempio.

Cattura di schermata dell'esempio di gestione dei file relativa alla scrittura di dati di testo in un file.

Posizione nell'esempio: l'esempio include una pagina intitolata FileAccessBasics che contiene gli esempi presentati in questa sezione. Il codice rilevante JavaScript e HTML è centralizzato nei file FileAccessBasicsPage.js (funzioni OnWriteTextToFileClick e OnReadTextFromFileClick) e FileAccessBasicsPage.html.

 

Uso di selezione file e selezione cartelle

icona passaggio

Guida introduttiva: Accesso a file con selezione file

Le selezioni file e cartelle sono usate per visualizzare un elenco di file o cartelle, nel quale gli utenti possono selezionare uno più elementi per eseguire altre elaborazioni. Le selezioni possono essere configurate a livello di programmazione per la ricerca di file e cartelle corrispondenti a un filtro specificato (ad esempio file con estensioni specifiche), per iniziare da una particolare cartella, per attivare una modalità di visualizzazione specifica (elenco o anteprima) e molto altro.

Le procedure seguenti illustrano come configurare le varie selezioni che consentono di selezionare un singolo file, più file e una singola cartella.

Dn595121.wedge(it-it,WIN.10).gifConfigurazione di una selezione file per selezionare un singolo file

  1. Crea un'istanza dell'oggetto FileOpenPicker.
  2. Imposta le proprietà viewMode, suggestedStartLocation e fileTypeFilter dell'oggetto FileOpenPicker come necessario.
  3. Chiama la funzione FileOpenPicker.pickSingleFileAsync. Quando la funzione FileOpenPicker.pickSingleFileAsync è completata, l'app ha accesso in lettura/scrittura al file selezionato.
Questo esempio di codice crea un'istanza e visualizza una selezione file che consente di selezionare un singolo file.

// Instantiate a FileOpenPicker object.
var openPicker = new Windows.Storage.Pickers.FileOpenPicker();

// Set the FileOpenPicker object's key properties.
openPicker.viewMode = Windows.Storage.Pickers.PickerViewMode.thumbnail;

openPicker.suggestedStartLocation = 
    Windows.Storage.Pickers.PickerLocationId.picturesLibrary;

openPicker.fileTypeFilter.replaceAll([".jpg", ".jpeg", ".png" ]);

// Display the FileOpenPicker for single file selection.
openPicker.pickSingleFileAsync().then(function (file) {
    // If the user selected a file ...
    if (file) {
        // ... process file as needed.
    }
    else {
        // User canceled the operation.
    }
});

Dn595121.wedge(it-it,WIN.10).gifConfigurazione di una selezione file per selezionare più file

  1. Crea un'istanza dell'oggetto FileOpenPicker.
  2. Imposta le proprietà FileOpenPicker.viewMode, FileOpenPicker.suggestedStartLocation e FileOpenPicker.FileTypeFilter dell'oggetto FileOpenPicker come necessario.
  3. Chiama la funzione FileOpenPicker.pickMultipleFileAsync. Quando la funzione FileOpenPicker.pickMultipleFileAsync è completata, l'app ha accesso in lettura/scrittura ai file selezionati. I file selezionati sono rappresentati da una matrice di oggetti StorageFile. La proprietà sizes della matrice indica il numero dei file selezionati, per cui puoi usare un ciclo for con la notazione di matrice standard per accedere a ogni oggetto StorageFile.
Questo esempio di codice crea un'istanza e visualizza una selezione file che consente di selezionare più file.

// Instantiate a FileOpenPicker object.
var openPicker = new Windows.Storage.Pickers.FileOpenPicker();

// Set the FileOpenPicker object's key properties.
openPicker.viewMode = Windows.Storage.Pickers.PickerViewMode.thumbnail;

openPicker.suggestedStartLocation = 
    Windows.Storage.Pickers.PickerLocationId.picturesLibrary;

openPicker.fileTypeFilter.replaceAll([".jpg", ".jpeg", ".png"]);

// Display the FileOpenPicker for multiple-file selection.
openPicker.pickMultipleFilesAsync().then(function (files) {
    // If the user selected at least one file ...
    if (files.size > 0) {
        for (var i = 0; i < files.size; i++) {
            // ... process each file - For example, files[i]
        }
    }
    else {
        // User canceled the operation.
    }
});

Dn595121.wedge(it-it,WIN.10).gifConfigurazione di una selezione cartelle

  1. Crea un'istanza dell'oggetto FolderPicker.
  2. Imposta le proprietà FolderPicker.viewMode, FolderPicker.suggestedStartLocation e FolderPicker.fileTypeFilter dell'oggetto FolderPicker come necessario.
  3. Chiama la funzione FileOpenPicker.pickSingleFileAsync. Quando la funzione FolderPicker.pickSingleFolderAsync è completata, l'app ha accesso in lettura/scrittura alla cartella selezionata e alle relative sottocartelle.
Questo esempio di codice crea un'istanza e visualizza una selezione cartelle.

// Instantiate a FolderPicker object.
var folderPicker = new Windows.Storage.Pickers.FolderPicker();

// Set the FileOpenPicker object's key properties.
folderPicker.suggestedStartLocation = 
    Windows.Storage.Pickers.PickerLocationId.desktop;
folderPicker.fileTypeFilter.replaceAll([".docx", ".xlsx", ".pptx"]);

// Display the FolderPicker for folder selection.
folderPicker.pickSingleFolderAsync().then(function (folder) {
    // If the user selected a folder ...
    if (folder) {
        // ... get the folder object.
        Windows.Storage.AccessCache.StorageApplicationPermissions.
        futureAccessList.addOrReplace("PickedFolderToken", folder);
        // Process folder as needed.
    }
    else {
        // User canceled operation.
    }
});

Questa cattura di schermata mostra i risultati di esecuzione dell'esempio con la selezione di due file (sample1.png e sample2.png).

Cattura di schermata dell'esempio di gestione dei file relativa all'uso di selezioni file e cartelle.

Posizione nell'esempio: l'esempio include una pagina intitolata File and Folder Pickers che illustra le attività descritte in questa sezione. Il codice JavaScript e HTML per questo esempio è incluso rispettivamente nei file FilePickerPage.js e FilePickerPage.html.

 

Uso dei file in OneDrive

icona passaggio

Guida introduttiva: Determinazione della disponibilità dei file di OneDrive

Windows 8.1 consente agli utenti di contrassegnare i file di OneDrive come solo online. Questi file non sono disponibili quando l'utente si disconnette da OneDrive. Per permetterti di determinare la disponibilità di un file a livello di programmazione, è stata introdotta la nuova proprietà denominata StorageFile.isAvailable.

I passaggi seguenti illustrano come determinare la disponibilità dei file usando la proprietà StorageFile.isAvailable.

  1. Acquisisci un oggetto StorageFolder per la posizione che desideri. Per eseguire questa operazione puoi ad esempio fare riferimento a una delle proprietà KnownFolders statiche come KnowFolders.picturesLibrary.
  2. Chiama la funzione StorageFolder.getFilesAsync dell'oggetto StorageFolder restituito. L'esempio correlato a questo argomento chiama tale metodo senza parametri per indicare che devono essere restituiti tutti i file. Per esempi di chiamata a StorageFolder.getFilesAsync con una query, vedi Guida introduttiva: Accesso ai file a livello di programmazione.
  3. Una volta completa la funzione StorageFolder.getFilesAsync, puoi usare un ciclo forEach per eseguire l'iterazione su ogni file restituito.
Questo esempio di codice enumera tutti i file nella raccolta Immagini, visualizzando il nome di ogni file, il nome del provider e la disponibilità.

// Get a StorageFolder object representing Pictures.
var library = Windows.Storage.KnownFolders.picturesLibrary;

// Initialize string that will contain the file name, provider name, 
// and availability for each file.
var outString = "";

// Get all files from the StorageFolder object.
library.getFilesAsync().then(function (files) {
    // For each file found ...
    files.forEach(function (file) {
        // Retrieve the file's name, provider name, and availability.
        outString += file.name 
                  + " (on " 
                  + file.provider.displayName 
                  + ") is " 
                  + (file.isAvailable ? "available" : "not available") + "\n";
    });
});

Questa cattura di schermata mostra i risultati di esempio di controllo della disponibilità dei file nella raccolta Immagini.

Cattura di schermata dell'esempio di gestione dei file relativa all'uso dei file di OneDrive.

Posizione nell'esempio: l'esempio include una pagina intitolata "OneDriveFilesPage" con un pulsante che enumera tutti i file nella raccolta Immagini del computer locale, elencando per ognuno di essi il nome, il provider (ad esempio This PC o OneDrive) e se è o meno disponibile. Il codice JavaScript e HTML per questo esempio è incluso rispettivamente nei file OneDriveFilesPage.js e OneDriveFilesPage.html.

 

Operazioni finali

icona requisiti store

Uso del Kit di certificazione app Windows

Operazione consigliata. L'esecuzione del Kit di certificazione app Windows consente di assicurarti che la tua app soddisfi i requisiti per Windows Store. Ti consigliamo di eseguire queste verifiche ogni volta che aggiungi una funzionalità principale alla tua app.

icona fine

Ecco fatto. Dopo aver esplorato le varie funzionalità di gestione dei file per la tua app, sei pronto per creare un'app come quella dell'esempio correlato di gestione dei file.

 

Vuoi saperne di più?

Guida introduttiva: Programmazione asincrona in JavaScript

Scopri altro sulla programmazione asincrona in JavaScript.

Guida introduttiva: Accesso ai file a livello di codice

Altre informazioni sull'enumerazione dei file.

Guida introduttiva: Lettura e scrittura di un file

Scopri altro sulla lettura e la scrittura di file.