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