Lettura di File Utilizzando StreamReader
È possibile aprire e leggere file utilizzando il linguaggio di programmazione C#.
Per leggere un file, si crea un nuovo oggetto StreamReader
. L'oggetto StreamReader
accetta come parametro il percorso del file.
Il termine "oggetto" sarà più chiaro nelle sezioni successive, tuttavia, per fini di comprensione, un oggetto è semplicemente un'istanza di un tipo di dato, e StreamReader
è un tipo di dato proprio come int
o float
. Quindi i valori 1
, 2.5f
e "Hello World"
possono tecnicamente essere considerati "oggetti" dei tipi di dato int, float e string rispettivamente.
index.cs
1StreamReader fileVarName = new StreamReader(fullPath);
Qui fileVarName
rappresenta il nome della variabile in cui verrà memorizzato l'oggetto StreamReader, mentre fullPath
dovrebbe essere il percorso completo del file sotto forma di stringa.
Ad esempio, è possibile aprire un file "text.txt" sul Desktop che ha il percorso C:/Users/Admin/Desktop/text.txt
:
index.cs
1StreamReader textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");
È possibile utilizzare anche la dichiarazione implicita per rendere la sintassi leggermente più breve: var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");
Si consideri che il file text.txt
contiene il seguente contenuto:
text.txt
12345This is some example text
Un oggetto StreamReader
dispone di un metodo ReadLine
che legge una riga dal file e la restituisce:
index.cs
1234var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); Console.WriteLine(line);
Output:
This
Il metodo ReadLine
sposta automaticamente il cursore alla riga successiva, quindi quando viene chiamato di nuovo, legge la riga successiva se presente; altrimenti restituisce semplicemente null
(niente):
index.cs
12345678var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); Console.WriteLine(textFile.ReadLine()); // This Console.WriteLine(textFile.ReadLine()); // is Console.WriteLine(textFile.ReadLine()); // some Console.WriteLine(textFile.ReadLine()); // example Console.WriteLine(textFile.ReadLine()); // text Console.WriteLine(textFile.ReadLine()); // NULL
Output:
This
is
some
example
text
Per leggere tutte le righe da un file si può utilizzare un ciclo while
con una condizione che verifica se la riga successiva è null
oppure no. Di seguito è riportato un modo semplice per farlo:
index.cs
12345678var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); while(line != null) { Console.WriteLine(line); line = textFile.ReadLine(); }
Output:
This
is
some
example
text
È possibile rendere il codice sopra riportato più ordinato utilizzando un trucco; a tal fine, esaminiamo le istruzioni di assegnazione. Un'istruzione di assegnazione ha anche un valore di ritorno, che corrisponde al valore assegnato. Questo concetto può essere compreso tramite un esempio:
index.cs
12int a; Console.WriteLine(a = 7);
Output:
7
Viene restituito 7
perché l'istruzione a = 7
restituisce 7
, che è il valore assegnato ad a
.
Questa informazione può essere utilizzata per eseguire operazioni come assegnare lo stesso valore a più variabili in un'unica istruzione:
index.cs
123456789int a = 1; int b = 1; int c = 1; a = b = c = 9; Console.WriteLine(a); Console.WriteLine(b); Console.WriteLine(c);
Output:
9
9
9
Utilizzando queste informazioni, è possibile modificare il codice di lettura del file per renderlo più conciso eliminando il codice non necessario:
index.cs
1234567var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while((line = textFile.ReadLine()) != null) { Console.WriteLine(line); }
All'interno della condizione, è stata prima utilizzata un'istruzione di assegnazione line = textFile.ReadLine()
che aggiorna automaticamente la variabile line
e poi verifica se è null in base al valore restituito dall'istruzione.
Dopo aver letto il file, è necessario chiuderlo utilizzando il metodo Close
, altrimenti si possono verificare perdite di memoria o il file può rimanere bloccato e diventare inaccessibile da altre parti finché il programma è in esecuzione.
Il codice finale sarà il seguente:
index.cs
123456789var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while ((line = textFile.ReadLine()) != null) { Console.WriteLine(line); } textFile.Close();
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Awesome!
Completion rate improved to 2.04
Lettura di File Utilizzando StreamReader
Scorri per mostrare il menu
È possibile aprire e leggere file utilizzando il linguaggio di programmazione C#.
Per leggere un file, si crea un nuovo oggetto StreamReader
. L'oggetto StreamReader
accetta come parametro il percorso del file.
Il termine "oggetto" sarà più chiaro nelle sezioni successive, tuttavia, per fini di comprensione, un oggetto è semplicemente un'istanza di un tipo di dato, e StreamReader
è un tipo di dato proprio come int
o float
. Quindi i valori 1
, 2.5f
e "Hello World"
possono tecnicamente essere considerati "oggetti" dei tipi di dato int, float e string rispettivamente.
index.cs
1StreamReader fileVarName = new StreamReader(fullPath);
Qui fileVarName
rappresenta il nome della variabile in cui verrà memorizzato l'oggetto StreamReader, mentre fullPath
dovrebbe essere il percorso completo del file sotto forma di stringa.
Ad esempio, è possibile aprire un file "text.txt" sul Desktop che ha il percorso C:/Users/Admin/Desktop/text.txt
:
index.cs
1StreamReader textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");
È possibile utilizzare anche la dichiarazione implicita per rendere la sintassi leggermente più breve: var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");
Si consideri che il file text.txt
contiene il seguente contenuto:
text.txt
12345This is some example text
Un oggetto StreamReader
dispone di un metodo ReadLine
che legge una riga dal file e la restituisce:
index.cs
1234var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); Console.WriteLine(line);
Output:
This
Il metodo ReadLine
sposta automaticamente il cursore alla riga successiva, quindi quando viene chiamato di nuovo, legge la riga successiva se presente; altrimenti restituisce semplicemente null
(niente):
index.cs
12345678var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); Console.WriteLine(textFile.ReadLine()); // This Console.WriteLine(textFile.ReadLine()); // is Console.WriteLine(textFile.ReadLine()); // some Console.WriteLine(textFile.ReadLine()); // example Console.WriteLine(textFile.ReadLine()); // text Console.WriteLine(textFile.ReadLine()); // NULL
Output:
This
is
some
example
text
Per leggere tutte le righe da un file si può utilizzare un ciclo while
con una condizione che verifica se la riga successiva è null
oppure no. Di seguito è riportato un modo semplice per farlo:
index.cs
12345678var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); while(line != null) { Console.WriteLine(line); line = textFile.ReadLine(); }
Output:
This
is
some
example
text
È possibile rendere il codice sopra riportato più ordinato utilizzando un trucco; a tal fine, esaminiamo le istruzioni di assegnazione. Un'istruzione di assegnazione ha anche un valore di ritorno, che corrisponde al valore assegnato. Questo concetto può essere compreso tramite un esempio:
index.cs
12int a; Console.WriteLine(a = 7);
Output:
7
Viene restituito 7
perché l'istruzione a = 7
restituisce 7
, che è il valore assegnato ad a
.
Questa informazione può essere utilizzata per eseguire operazioni come assegnare lo stesso valore a più variabili in un'unica istruzione:
index.cs
123456789int a = 1; int b = 1; int c = 1; a = b = c = 9; Console.WriteLine(a); Console.WriteLine(b); Console.WriteLine(c);
Output:
9
9
9
Utilizzando queste informazioni, è possibile modificare il codice di lettura del file per renderlo più conciso eliminando il codice non necessario:
index.cs
1234567var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while((line = textFile.ReadLine()) != null) { Console.WriteLine(line); }
All'interno della condizione, è stata prima utilizzata un'istruzione di assegnazione line = textFile.ReadLine()
che aggiorna automaticamente la variabile line
e poi verifica se è null in base al valore restituito dall'istruzione.
Dopo aver letto il file, è necessario chiuderlo utilizzando il metodo Close
, altrimenti si possono verificare perdite di memoria o il file può rimanere bloccato e diventare inaccessibile da altre parti finché il programma è in esecuzione.
Il codice finale sarà il seguente:
index.cs
123456789var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while ((line = textFile.ReadLine()) != null) { Console.WriteLine(line); } textFile.Close();
Grazie per i tuoi commenti!