Il framework .NET consente tramite varie classi apposite di manipolare i file, da dire che questi ultimi sono trattati dalla piattaforma come flussi ( streams ) di dati in formato testo o binari. Ecco le classi predisposte:
- Stream – classe astratta che supporta la lettura e scrittura di byte
- FileStream – supporta l’accesso casuale ai file, supportando anche la modalità asincrona ed il buffering
- BufferedStream – flusso che aggiunge il supporto al buffering ad un altro flusso ( queste classi si possono “comporre”)
- MemoryStream – flusso senza buffer che incapsula i dati direttamente leggibili in memoria; non ha un archivio di memorizzazione persistente, ma è utile come buffer temporaneo
- NetworkStream – implementa un flusso su una connessione di rete
- BinaryReader – legge stringhe codificate e tipi di dato nativi da un flusso
- BinaryWriter – scrive stringhe codificate e tipi di dato nativi su un flusso
- TextReader – classe astratta di lettura testo con supporto unicode
- TextWriter – classe astratta di scrittura testo con supporto unicode
- StringReader – legge da una stringa o flusso e memorizza in un flusso o stringa
- StringWriter – scrive su una stringa o flusso a partire da un flusso o da una stringa
- StreamReader – legge i caratteri da un flusso utilizzando un encoding per convertire byte a caratteri e vicerversa
- StreamWriter – scrive i caratteri su un flusso utilizzando un encoding per convertire byte a caratteri e vicerversa
La piattaforma .NET dispone anche di classi per la manipolazione del file system, dalla creazione, spostamento, cambio di nome alla cancellazione di file e directory.
- File – fornisce metodi statici di manipolazione file
- FileInfo – rappresenta un file e fornisce metodi di manipolazione
- Directory – fornisce i metodi statici di manipolazione di cartelle
- DirectoryInfo – rappresenta una directory e fornisce metodi di manipolazione
- Path – manipola stringhe che rappresentano file e directory
- FileSystemInfo – classe base astratta che funge da superclasse di FileInfo e DirectoryInfo
Tutte queste classi risiedono nel namespace System.IO. Dopo tutta questa teoria vediamo un pò di pratica attraverso questo esempio.
using System; using System.IO; public class Corso { static void Main(string[] args) { FileStream f = null; StreamWriter sw = null; try { f = new FileStream("test.txt", FileMode.OpenOrCreate, FileAccess.Write); sw = new StreamWriter(f); } catch (Exception e) { Console.WriteLine(e.Message); Console.ReadKey(); return; } sw.WriteLine("Questo è soltanto un piccolo test\ con un file testuale"); Console.WriteLine("Scrittura del file {0}\ avvenuta con successo!", f.Name); sw.Close(); f.Close(); Console.ReadKey(); } }
Ora andiamo a leggere il file che abbiamo creato e lo stamperemo a video, poi cancelleremo il file.
using System; using System.IO; public class Corso { static void Main(string[] args) { FileStream f = null; StreamReader sr = null; try { f = new FileStream("test.txt", FileMode.OpenOrCreate, FileAccess.Read); sr = new StreamReader(f); } catch (Exception e) { Console.WriteLine(e.Message); Console.ReadKey(); return; } string buffer = sr.ReadLine(); Console.WriteLine(buffer); sr.Close(); f.Close(); File.Delete("test.txt"); Console.ReadKey(); } }
<< Lezione Precedente – Inizio Corso – Indice Lezioni – Lezione Successiva >>