C #: lettura e scrittura su file di testo

Il StreamReader e StreamWriterle classi vengono utilizzate per leggere e scrivere dati su file di testo. Queste classi ereditano dalla classe base astratta Stream, che supporta la lettura e la scrittura di byte in un flusso di file.

La classe StreamReader

Il StreamReaderclass eredita anche dalla classe base astratta TextReader che rappresenta un lettore per la lettura di serie di caratteri. La tabella seguente descrive alcuni dei file di uso comunemethods della classe StreamReader -

Sr.No. Metodo e descrizione
1

public override void Close()

Chiude l'oggetto StreamReader e il flusso sottostante e rilascia tutte le risorse di sistema associate al lettore.

2

public override int Peek()

Restituisce il prossimo carattere disponibile ma non lo consuma.

3

public override int Read()

Legge il carattere successivo dal flusso di input e fa avanzare la posizione del carattere di uno.

Esempio

L'esempio seguente mostra la lettura di un file di testo denominato Jamaica.txt. Il file legge -

Down the way where the nights are gay
And the sun shines daily on the mountain top
I took a trip on a sailing ship
And when I reached Jamaica
I made a stop

using System;
using System.IO;

namespace FileApplication {
   class Program {
      static void Main(string[] args) {
         try {
            // Create an instance of StreamReader to read from a file.
            // The using statement also closes the StreamReader.
            using (StreamReader sr = new StreamReader("c:/jamaica.txt")) {
               string line;

               // Read and display lines from the file until 
               // the end of the file is reached. 
               while ((line = sr.ReadLine()) != null) {
                  Console.WriteLine(line);
               }
            }
         } catch (Exception e) {
            // Let the user know what went wrong.
            Console.WriteLine("The file could not be read:");
            Console.WriteLine(e.Message);
         }
         Console.ReadKey();
      }
   }
}

Indovina cosa mostra quando compili ed esegui il programma!

La classe StreamWriter

Il StreamWriter class eredita dalla classe astratta TextWriter che rappresenta uno scrittore, che può scrivere una serie di caratteri.

La tabella seguente descrive i metodi più comunemente usati di questa classe:

Sr.No. Metodo e descrizione
1

public override void Close()

Chiude l'oggetto StreamWriter corrente e il flusso sottostante.

2

public override void Flush()

Cancella tutti i buffer per il writer corrente e fa in modo che tutti i dati memorizzati nel buffer vengano scritti nel flusso sottostante.

3

public virtual void Write(bool value)

Scrive la rappresentazione testuale di un valore booleano nella stringa di testo o nel flusso. (Ereditato da TextWriter.)

4

public override void Write(char value)

Scrive un carattere nel flusso.

5

public virtual void Write(decimal value)

Scrive la rappresentazione testuale di un valore decimale nella stringa di testo o nel flusso.

6

public virtual void Write(double value)

Scrive la rappresentazione testuale di un valore a virgola mobile a 8 byte nella stringa di testo o nel flusso.

7

public virtual void Write(int value)

Scrive la rappresentazione testuale di un intero con segno a 4 byte nella stringa di testo o nel flusso.

8

public override void Write(string value)

Scrive una stringa nel flusso.

9

public virtual void WriteLine()

Scrive un terminatore di riga nella stringa di testo o nel flusso.

Per un elenco completo dei metodi, visitare la documentazione C # di Microsoft.

Esempio

L'esempio seguente mostra la scrittura di dati di testo in un file utilizzando la classe StreamWriter -

using System;
using System.IO;

namespace FileApplication {
   class Program {
      static void Main(string[] args) {
         string[] names = new string[] {"Zara Ali", "Nuha Ali"};
         
         using (StreamWriter sw = new StreamWriter("names.txt")) {

            foreach (string s in names) {
               sw.WriteLine(s);
            }
         }
         
         // Read and show each line from the file.
         string line = "";
         using (StreamReader sr = new StreamReader("names.txt")) {
            while ((line = sr.ReadLine()) != null) {
               Console.WriteLine(line);
            }
         }
         Console.ReadKey();
      }
   }
}

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

Zara Ali
Nuha Ali