DetailPage-MSS-KB

Microsoft Knowledge Base

Identificativo articolo: 306777 - Ultima modifica: domenica 30 dicembre 2012 - Revisione: 6.0

 
Questo articolo è stato precedentemente pubblicato con il codice di riferimento I306777
Per una versione di Microsoft Visual Basic .NET di questo articolo, vedere 302309  (http://support.microsoft.com/kb/302309/ ) .

Questo articolo si riferisce ai seguenti spazi dei nomi di Microsoft.NET Framework Class Library:
  • System. IO
  • System. Collections

In questa pagina

Sommario

In questo articolo viene illustrato come recuperare informazioni da un file di testo (txt) e quindi utilizzare una classe ArrayList per visualizzare tali informazioni all'utente.

Requisiti

Microsoft Visual C#

La lettura dei file di testo in Visual C#

Apertura e lettura dei file per l'accesso in lettura costituiscono una parte importante della funzionalità di input/output (IO), anche se non è necessario scrivere il file in questione. Questo esempio viene aperto un file per la lettura, è utile per la lettura dei file di testo ma non adatta per i file binari. In questo esempio viene utilizzato uno dei molti metodi che sono disponibili per l'apertura del file.

Sebbene siano disponibili per archiviare le informazioni recuperate dal file di diverse strutture di dati, una classe ArrayList è la struttura più semplice da utilizzare. Per aprire e leggere il file, in questo esempio vengono utilizzati oggetti dello spazio dei nomi System. IO , in particolare la classe System.IO.StreamReader .

Nota. In questo esempio occorre disporre di un file di testo (txt) da cui leggere.

Per caricare e leggere un file di testo da Visual C#, attenersi alla seguente procedura:
  1. Avviare Microsoft Visual Studio.
  2. Creare una nuova applicazione Console in Visual C#. Visual Studio crea automaticamente una Classe Static insieme a una routine Main () vuota.
  3. Verificare che il progetto faccia riferimento ad almeno lo spazio dei nomi System . Utilizzare l'istruzione using gli spazi dei nomi System, System. IOe System. Collections in modo che non è necessario qualificare dichiarazioni provenienti da questi spazi dei nomi in un secondo momento nel codice. È necessario utilizzare queste istruzioni prima di qualunque altra dichiarazione.
    using System;
    using System.IO;
    using System.Collections;
    					
  4. Per aprire un file per la lettura, creare una nuova istanza di un oggetto StreamReader e passare il percorso del file al costruttore come segue:
    StreamReader objReader = new StreamReader("c:\\test.txt");
    					
  5. È necessario disporre di una variabile di stringa in cui memorizzare ogni riga del file si elaborano. Poiché tali righe verranno aggiunte a un ArrayList, dichiarare e creare inoltre un oggetto di quel tipo.
    string sLine="";
    ArrayList arrText = new ArrayList();
    					
  6. Esistono diversi modi per leggere il file, tra cui il metodo ReadToEnd che legge l'intero file in una sola volta. Tuttavia, in questo esempio, è possibile utilizzare il metodo ReadLine per leggere file una riga alla volta. Quando viene raggiunta la fine del file, questo metodo restituisce un valore null, che consente di terminare il ciclo. Durante la lettura di ogni riga del file, è possibile utilizzare il metodo Add della classe ArrayList per inserire le righe in una classe ArrayList .
    while (sLine != null)
    {
    	sLine = objReader.ReadLine();
    	if (sLine != null)
    		arrText.Add(sLine);
    }
    objReader.Close();
    					
  7. Utilizzare un ciclo For Each per scrivere il contenuto del nuovo ArrayList nella console come segue:
    foreach (string sOutput in arrText)
    	Console.WriteLine(sOutput);
    Console.ReadLine();
    					
  8. Salvare ed eseguire il codice, viene visualizzato il file nella console.

Elenco completo del codice

using System;
using System.IO;
using System.Collections;

namespace TextFileReader_csharp
{
	/// <summary>
	/// Summary description for Class1.
	/// </summary>
	class Class1
	{
		static void Main(string[] args)
		{
			StreamReader objReader = new StreamReader("c:\\test.txt");
			string sLine="";
			ArrayList arrText = new ArrayList();

			while (sLine != null)
			{
				sLine = objReader.ReadLine();
				if (sLine != null)
					arrText.Add(sLine);
			}
                        objReader.Close();

			foreach (string sOutput in arrText)
				Console.WriteLine(sOutput);
			Console.ReadLine();
		}
	}
}
				

Risoluzione dei problemi

Esistono diversi aspetti da tenere presente quando si lavora con file i/o, inclusi i seguenti elementi:
  • Ogni volta che si accede a un file, è possibile che il file che si sta tentando di leggere o scrivere non sia nel sistema o potrebbe essere in uso.
  • In questo esempio legge l'intero file in memoria prima di elaborazione del file. Può verificarsi una situazione in cui il file è troppo grande per essere contenuto in memoria o non si disponga delle autorizzazioni necessarie per accedere al file.
Tutti questi casi causare un'eccezione da generare. È sempre buona norma fornire un blocco try... catch per gestire questi problemi comuni.

Le informazioni in questo articolo si applicano a:
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# 2008 Express Edition
Chiavi: 
kbcollections kbhowtomaster kbio kbmt KB306777 KbMtit
Traduzione automatica articoliTraduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell’articolo: 306777  (http://support.microsoft.com/kb/306777/en-us/ )
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.
Condividi
Altre opzioni per il supporto
Forum del supporto di Microsoft Community
Contattaci direttamente
Ricerca di un partner certificato Microsoft
Microsoft Store