Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo argomento illustra ciò che devi sapere per iniziare a leggere e scrivere in file in un'app UWP (Universal Windows Platform). Sono state introdotte le API e i tipi principali e vengono forniti collegamenti per altre informazioni.
Questa non è un'esercitazione. Per un'esercitazione, vedere Creare, scrivere e leggere un file che, oltre a illustrare come creare, leggere e scrivere un file, illustra come usare buffer e flussi. Potresti anche essere interessato all'esempio di accesso ai file che illustra come creare, leggere, scrivere, copiare ed eliminare un file, nonché come recuperare le proprietà dei file e ricordare un file o una cartella in modo che l'app possa accedervi di nuovo facilmente.
Esamineremo il codice per scrivere e leggere testo da un file e come accedere alle cartelle locali, mobili e temporanee dell'app.
Cosa è necessario sapere
Ecco i tipi principali che è necessario conoscere per leggere o scrivere testo da/in un file:
Windows.Storage.StorageFile rappresenta un file. Questa classe include proprietà che forniscono informazioni sul file e sui metodi per la creazione, l'apertura, la copia, l'eliminazione e la ridenominazione dei file. Potresti essere abituato a gestire i percorsi delle stringhe. Esistono alcune API di Windows Runtime che accettano un percorso stringa, ma più spesso si userà un StorageFile per rappresentare un file perché alcuni file usati in UWP potrebbero non avere un percorso o un percorso non complesso. Usare StorageFile.GetFileFromPathAsync() per convertire un percorso stringa in un StorageFile.
La classe FileIO
offre un modo semplice per leggere e scrivere testo. Questa classe può anche leggere/scrivere una matrice di byte o il contenuto di un buffer. Questa classe è molto simile alla classe PathIO. La differenza principale è che invece di accettare un percorso stringa, come PathIO, accetta un StorageFile. Windows.Storage.StorageFolder rappresenta una cartella (directory). Questa classe include metodi per la creazione di file, l'esecuzione di query sul contenuto di una cartella, la creazione, la ridenominazione e l'eliminazione di cartelle e proprietà che forniscono informazioni su una cartella.
I modi comuni per ottenere un StorageFolder includono:
- Windows.Storage.Pickers.FolderPicker che consente all'utente di passare alla cartella che vuole usare.
- Windows.Storage.ApplicationData.Current che fornisce il StorageFolder specifico di una delle cartelle locali dell'app, ad esempio la cartella locale, il roaming e la cartella temporanea.
- Windows.Storage.KnownFolders che fornisce l'StorageFolder per librerie note come le librerie Musica o Immagini.
Scrivere testo in un file
Per questa introduzione, ci concentreremo su uno scenario semplice: lettura e scrittura di testo. Si inizierà esaminando il codice che usa la classe FileIO per scrivere testo in un file.
Windows.Storage.StorageFolder storageFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
Windows.Storage.StorageFile file = await storageFolder.CreateFileAsync("test.txt",
Windows.Storage.CreationCollisionOption.OpenIfExists);
await Windows.Storage.FileIO.WriteTextAsync(file, "Example of writing a string\r\n");
// Append a list of strings, one per line, to the file
var listOfStrings = new List<string> { "line1", "line2", "line3" };
await Windows.Storage.FileIO.AppendLinesAsync(file, listOfStrings); // each entry in the list is written to the file on its own line.
Prima di tutto si identifica dove deve trovarsi il file.
Windows.Storage.ApplicationData.Current.LocalFolder fornisce l'accesso alla cartella dati locale, creata per l'app quando viene installata. Per informazioni dettagliate sulle cartelle a cui l'app può accedere, vedere Accedere al file system.
Si usa quindi StorageFolder per creare il file o aprirlo se esiste già.
La classe FileIO consente di scrivere testo nel file in modo pratico.
FileIO.WriteTextAsync() sostituisce l'intero contenuto del file con il testo fornito.
FileIO.AppendLinesAsync() accoda una raccolta di stringhe al file, scrivendo una stringa per riga.
Leggere testo da un file
Come per la scrittura di un file, la lettura di un file inizia con specificando dove si trova il file. Verrà usata la stessa posizione dell'esempio precedente. Si userà quindi la classe FileIO per leggerne il contenuto.
Windows.Storage.StorageFolder storageFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
Windows.Storage.StorageFile file = await storageFolder.GetFileAsync("test.txt");
string text = await Windows.Storage.FileIO.ReadTextAsync(file);
È anche possibile leggere ogni riga del file in singole stringhe in una raccolta con IList<string> contents = await Windows.Storage.FileIO.ReadLinesAsync(sampleFile);
Accedere al file system
Nella piattaforma UWP l'accesso alle cartelle è limitato per garantire l'integrità e la privacy dei dati dell'utente.
Cartelle dell'app
Quando viene installata un'app UWP, vengono create diverse cartelle in c:\users<nome utente>\AppData\Local\Packages<'identificatore del pacchetto dell'app>\ da archiviare, tra le altre cose, i file locali, mobili e temporanei dell'app. L'app non deve dichiarare alcuna funzionalità per accedere a queste cartelle e queste cartelle non sono accessibili da altre app. Queste cartelle vengono rimosse anche quando l'app viene disinstallata.
Queste sono alcune delle cartelle dell'app comunemente usate:
LocalState: per i dati locali del dispositivo corrente. Quando viene eseguito il backup del dispositivo, i dati in questa directory vengono salvati in un'immagine di backup in OneDrive. Se l'utente reimposta o sostituisce il dispositivo, i dati verranno ripristinati. Accedere a questa cartella con
Windows.Storage.ApplicationData.Current.LocalFolder.Salvare i dati locali di cui non si vuole eseguire il backup in OneDrive nel LocalCacheFolder, a cui è possibile accedere conWindows.Storage.ApplicationData.Current.LocalCacheFolder.RoamingState: I dati archiviati qui non vengono più gestiti in roaming (a partire da Windows 11), ma la cartella è ancora disponibile. Accedere alla cartella roaming con
Windows.Storage.ApplicationData.Current.RoamingFolder. La sostituzione consigliata è Azure App Service. Il servizio app di Azure è ampiamente supportato, documentato, affidabile e supporta scenari multipiattaforma/multi-ecosistema, ad esempio iOS, Android e Web.TempState: per i dati che possono essere eliminati quando l'app non è in esecuzione. Accedere a questa cartella con
Windows.Storage.ApplicationData.Current.TemporaryFolder.
Accedere al resto del file system
Un'app UWP deve dichiarare la sua finalità di accedere a una libreria utente specifica aggiungendo la funzionalità corrispondente al relativo manifesto. All'utente viene quindi richiesto quando l'app viene installata per verificare che autorizzi l'accesso alla libreria specificata. In caso contrario, l'app non è installata. Sono disponibili funzionalità per accedere alle immagini, ai video e alle librerie musicali. Per un elenco completo, vedere la dichiarazione di funzionalità dell'app . Per ottenere un StorageFolder per queste librerie, usare la classe Windows.Storage.KnownFolders.
Raccolta documenti
Sebbene sia possibile accedere alla raccolta documenti dell'utente, tale funzionalità è limitata, il che significa che un'app che lo dichiara verrà rifiutata dallo Store di Microsoft, a meno che non si segua un processo per ottenere un'autorizzazione speciale. Non è destinato all'uso generale. Usare invece i selettore di file o cartelle (vedere Apri file e cartelle con una selezione e Salvare un file con una selezione) che consentono all'utente di passare alla cartella o al file. Quando l'utente passa a una cartella o a un file, ha concesso in modo implicito l'autorizzazione per l'accesso all'app e il sistema consente l'accesso.
Accesso generale
In alternativa, la tua app può dichiarare la funzionalità broadFileSystem nel manifest, che richiede anche l'approvazione di Microsoft Store. L'app può quindi accedere a qualsiasi file a cui l'utente può accedere senza richiedere il ricorso a un selettore di file o cartelle.
Per un elenco completo dei percorsi a cui le app possono accedere, vedere Autorizzazioni di accesso ai file.
API e documenti utili
Di seguito è riportato un breve riepilogo delle API e di altri documenti utili per iniziare a usare file e cartelle.
API utili
| API (Interfaccia di Programmazione delle Applicazioni) | Descrizione |
|---|---|
| Windows.Storage.StorageFile | Fornisce informazioni sul file e sui metodi per la creazione, l'apertura, la copia, l'eliminazione e la ridenominazione dei file. |
| Windows.Storage.StorageFolder | Fornisce informazioni sulla cartella, i metodi per la creazione di file e metodi per la creazione, la ridenominazione e l'eliminazione di cartelle. |
| FileIO | Fornisce un modo semplice per leggere e scrivere testo. Questa classe può anche leggere/scrivere una matrice di byte o il contenuto di un buffer. |
| pathIO | Fornisce un modo semplice per leggere/scrivere testo da/in un file in base a un percorso stringa per il file. Questa classe può anche leggere/scrivere una matrice di byte o il contenuto di un buffer. |
| DataReader & DataWriter | Leggi e scrivi buffer di lettura, buffer di scrittura, byte, interi, GUID, TimeSpans e altro ancora, da/a un flusso. |
| Windows.Storage.ApplicationData.Current | Consente di accedere alle cartelle create per l'app, ad esempio la cartella locale, la cartella mobile e la cartella dei file temporanei. |
| Windows.Storage.Pickers.FolderPicker | Consente all'utente di scegliere una cartella e restituisce un StorageFolder. Questo è il modo in cui si ottiene l'accesso alle posizioni a cui l'app non può accedere per impostazione predefinita. |
| Windows.Storage.Pickers.FileOpenPicker | Consente all'utente di scegliere un file da selezionare e aprire e restituisce un StorageFile corrispondente. Questo è il modo in cui si ottiene l'accesso a un file a cui l'app non può accedere per impostazione predefinita. |
| Windows.Storage.Pickers.FileSavePicker | Consente all'utente di scegliere il nome file, l'estensione e il percorso di archiviazione per un file. Restituisce un StorageFile. Questo è il modo in cui si salva un file in un percorso a cui l'app non può accedere per impostazione predefinita. |
| spazio dei nomi Windows.Storage.Streams | Copre i flussi di lettura e scrittura. In particolare, esamina le classi DataReader e DataWriter che leggono e scrivono buffer, byte, interi, GUID, intervalli di tempo e altro ancora. |
Documentazione utile
| Argomento | Descrizione |
|---|---|
| namespace Windows.Storage | Documentazione di riferimento sulle API. |
| file, cartelle e librerie | Documentazione concettuale. |
| Creare, scrivere e leggere un file | Coprendo la creazione, lettura e scrittura di testo, dati binari e flussi. |
| Introduzione all'archiviazione dei dati delle app in locale | Oltre a coprire le procedure consigliate per il salvataggio dei dati locali, copre lo scopo della cartella LocalSettings e LocalCache. |
| Memorizzare e recuperare le impostazioni e altri dati dell'applicazione | Offre una panoramica dei vari archivi dati dell'app, ad esempio le cartelle locali, mobili e temporanee. |
| Autorizzazioni di accesso ai file | Informazioni sui percorsi del file system a cui l'app può accedere. |
| Aprire file e cartelle con un selettore | Illustra come accedere a file e cartelle consentendo all'utente di decidere tramite un'interfaccia utente di selezione. |
| Windows.Storage.Streams | Tipi usati per leggere e scrivere flussi. |
| File e cartelle nelle raccolte Musica, Immagini e Video | Viene illustrato come rimuovere cartelle dalle raccolte, ottenere l'elenco di cartelle in una raccolta e individuare foto, musica e video archiviati. |
Esempi di codice utili
| Esempio di codice | Descrizione |
|---|---|
| esempio di dati dell'applicazione | Illustra come archiviare e recuperare dati specifici per ogni utente usando le API dati dell'applicazione. |
| esempio di accesso ai file | Illustra come creare, leggere, scrivere, copiare ed eliminare un file. |
| esempio di selezione file | Illustra come accedere a file e cartelle consentendo all'utente di sceglierli con l'interfaccia utente e come salvare un file in modo che l'utente possa specificare il nome, il tipo di file e il percorso di un file da salvare. |
| esempio JSON | Illustra come codificare e decodificare oggetti JSON (JavaScript Object Notation), matrici, stringhe, numeri e valori booleani usando lo spazio dei nomi spazio dei nomi Windows.Data.Json. |
| esempi di codice aggiuntivi | Scegliere File, cartelle e raccolte nell'elenco a discesa delle categorie. |