Lavorare con la classe FileStream (C#)

 C Programming >> Programmazione C >  >> Tags >> File
Lavorare con la classe FileStream (C#)

Nel mio precedente articolo ho discusso delle basi del flusso in .NET Framework. Come ho già menzionato nell'articolo, le classi di flusso in C# funzionano sempre in cima agli archivi di backup che potrebbero essere qualsiasi cosa come FileSystem, Memoria e Rete.

L'archivio di supporto di FileStream è File System. La classe FIleStream è presente nello spazio dei nomi System.IO ed è derivata dalla classe Stream.

Possiamo lavorare con FileStream su file system seguendo due modi.

  1. Metodi statici System.IO.File.
  2. Classe FileStream.

Tieni presente che tutti gli esempi che sto usando qui sono sviluppati utilizzando il linguaggio C#.

Per prima cosa esamineremo i metodi della classe File che possono essere usati per leggere e scrivere sullo stream.

  1. ApriLeggi – Primi metodi che possiamo usare per ottenere il sola lettura stream dal file è OpenRead come mostrato nello snippet di codice sottostante.
    FileStream fs = File.OpenRead(@"D:\Test.txt");

    Questo metodo è utile solo se siamo sicuri che il file sia presente nella posizione specificata. In caso contrario, otterremo un'eccezione FileNotFoundException.

  2. OpenWrite – Ci sono pochi altri metodi forniti dalla classe File che possono essere utili se non siamo sicuri della presenza del file. Uno di questi è OpenWrite. Questo metodo apre un file esistente o crea un nuovo file per la scrittura e restituisce un flusso di sola scrittura. Lascia il contenuto esistente e imposta la posizione su 0, il che significa che se iniziamo a scrivere possiamo sovrascrivere il contenuto esistente. Supponiamo che se vogliamo aggiungere contenuti esistenti, dobbiamo posizionare il puntatore alla fine dello stream e iniziare a scriverci.
    FileStream fs = File.OpenWrite(@"D:\Test.txt");
  3. Crea – Questo metodo crea un nuovo file e restituisce un flusso di lettura\scrittura. Tronca il contenuto esistente e inizia a scrivere il nuovo contenuto.
    FileStream fs = File.Create(@"D:\Test1.txt");

Classe FileStream

Possiamo recuperare il flusso di un file utilizzando i costruttori di FileStream Class.

La classe fornisce circa 15 costruttori sovraccaricati per leggere, archiviare e recuperare il flusso come mostrato nella figura seguente.

Il percorso nel caso precedente può essere un percorso assoluto, relativo o un percorso UNC per le posizioni di rete.

Enumerazione in modalità File

Come possiamo vedere nella figura sopra, possiamo vedere che esiste un parametro di tipo FileMode Enumeration che ha le seguenti opzioni.

  1. Crea:crea un nuovo file. Se il file esiste già, il file verrà sovrascritto.
  2. CreateNew: crea un nuovo file ma genera un'eccezione "System.IO.IOException" se il file è già terminato.
  3. Apri – Apre il file. Imposta la posizione del puntatore su 0 e genera un'eccezione "System.IO.FileNotFoundException" se il file non è presente.
  4. OpenOrCreate:apre un file esistente o crea un nuovo file se non esiste già.
  5. Tronca:apre un file in uscita e ne tronca il contenuto per impostarne la dimensione su 0 byte.
  6. Append – Apre un file e imposta la posizione del puntatore alla fine del file. Se il file non esiste, viene creato. È consentita solo la modalità di sola scrittura. È consentita solo l'aggiunta di dati.

Accesso ai file

  • Per impostazione predefinita, la classe FileStream aprirà il file in modalità Lettura/Scrittura con l'eccezione della modalità FileMode.Append.
  • L'enumerazione FileAccess imposta l'accesso al file su Lettura, Scrittura o Lettura\Scrittura.
  • Le modalità di lettura o R/W non possono essere combinate con l'enumerazione FileMode.Append poiché questa modalità supporta solo l'operazione di scrittura.

Demo del codice per mostrare la classe FileStream in azione

            using ( FileStream fs = new FileStream(@"D:\Test2.txt", FileMode.Create, FileAccess.ReadWrite))
            {
                fs.WriteByte(100);
                fs.Position = 0;
                fs.ReadByte();
            }

Come possiamo vedere dal codice sopra è sempre necessario implementare la classe FileStream nel blocco using altrimenti può creare problemi di memoria.

In questo codice creo un file in modalità R/W e scrivo e leggo un byte nello stesso file.

In questo articolo ho scritto della classe FileStream che viene utilizzata per leggere o scrivere dati in/da file.