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!