Condividi tramite


StreamReader Classe

Definizione

Implementa un oggetto TextReader che legge i caratteri da un flusso di byte in una particolare codifica.

public ref class StreamReader : System::IO::TextReader
public class StreamReader : System.IO.TextReader
[System.Serializable]
public class StreamReader : System.IO.TextReader
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class StreamReader : System.IO.TextReader
type StreamReader = class
    inherit TextReader
[<System.Serializable>]
type StreamReader = class
    inherit TextReader
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type StreamReader = class
    inherit TextReader
Public Class StreamReader
Inherits TextReader
Ereditarietà
StreamReader
Ereditarietà
Attributi

Esempio

Nell'esempio seguente viene usata un'istanza di StreamReader per leggere il testo da un file. Il costruttore usato in questo esempio non è supportato per l'uso in App di Windows Store.

using namespace System;
using namespace System::IO;
int main()
{
   try
   {
      // Create an instance of StreamReader to read from a file.
      StreamReader^ sr = gcnew StreamReader( "TestFile.txt" );
      try
      {
         String^ line;
         
         // Read and display lines from the file until the end of 
         // the file is reached.
         while ( line = sr->ReadLine() )
         {
            Console::WriteLine( line );
         }
      }
      finally
      {
         if ( sr )
            delete (IDisposable^)sr;
      }
   }
   catch ( Exception^ e ) 
   {
      // Let the user know what went wrong.
      Console::WriteLine( "The file could not be read:" );
      Console::WriteLine( e->Message );
   }
}
using System;
using System.IO;

class Test
{
    public static void Main()
    {
        try
        {
            // Create an instance of StreamReader to read from a file.
            // The using statement also closes the StreamReader.
            using (StreamReader sr = new StreamReader("TestFile.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);
        }
    }
}
Imports System.IO

Class Test
    Public Shared Sub Main()
        Try
            ' Create an instance of StreamReader to read from a file.
            Dim sr As StreamReader = New StreamReader("TestFile.txt")
            Dim line As String
            ' Read and display the lines from the file until the end 
            ' of the file is reached.
            Do
                line = sr.ReadLine()
                Console.WriteLine(Line)
            Loop Until line Is Nothing
            sr.Close()
        Catch E As Exception
            ' Let the user know what went wrong.
            Console.WriteLine("The file could not be read:")
            Console.WriteLine(E.Message)
        End Try
    End Sub
End Class

Nell'esempio seguente viene creata un'istanza di un StreamReader oggetto e viene chiamato il ReadAsync relativo metodo per leggere un file in modo asincrono.

using System;
using System.IO;
using System.Threading.Tasks;

class Example
{
    static async Task Main()
    {
        await ReadAndDisplayFilesAsync();
    }

    static async Task ReadAndDisplayFilesAsync()
    {
        String filename = "TestFile1.txt";
        Char[] buffer;

        using (var sr = new StreamReader(filename)) {
            buffer = new Char[(int)sr.BaseStream.Length];
            await sr.ReadAsync(buffer, 0, (int)sr.BaseStream.Length);
        }

        Console.WriteLine(new String(buffer));
    }
}
// The example displays the following output:
//       This is the first line of text in a relatively short file.
//       This is the second line.
//       This is the third line.
//       This is the fourth and final line.
Imports System.IO
Imports System.Threading.Tasks

Module Example
    Public Sub Main()
        ReadAndDisplayFilesAsync()
    End Sub

    Private Async Sub ReadAndDisplayFilesAsync()
        Dim filename As String = "TestFile1.txt"
        Dim buffer() As Char
        
        Using sr As New StreamReader(filename)
            ReDim buffer(CInt(sr.BaseStream.Length))
            Await sr.ReadAsync(buffer, 0, CInt(sr.BaseStream.Length))
        End Using

        Console.WriteLine(New String(buffer))
    End Sub
End Module
' The example displays the following output:
'       This is the first line of text in a relatively short file.
'       This is the second line.
'       This is the third line.
'       This is the fourth and final line.

Commenti

StreamReader è progettato per l'input dei caratteri in una codifica specifica, mentre la classe è progettata per l'input e l'output Stream di byte. Usare StreamReader per leggere le righe di informazioni da un file di testo standard.

Importante

Il tipo implementa l'interfaccia IDisposable. Dopo aver utilizzato il tipo, è necessario eliminarlo direttamente o indirettamente. Per eliminare direttamente il tipo, chiamare il metodo Dispose in un blocco try/catch. Per eliminarlo indirettamente, utilizzare un costrutto di linguaggio come ad esempio using in C# o Using in Visual Basic. Per altre informazioni, vedere la sezione "Uso di un oggetto che implementa IDisposable" nell'argomento relativo all'interfaccia IDisposable.

StreamReader impostazione predefinita per la codifica UTF-8, a meno che non sia specificata in caso contrario, anziché impostazione predefinita nella tabella codici ANSI per il sistema corrente. UTF-8 gestisce correttamente i caratteri Unicode e fornisce risultati coerenti sulle versioni localizzate del sistema operativo. Se si ottiene la codifica dei caratteri corrente usando la CurrentEncoding proprietà, il valore non è affidabile finché non dopo il primo Read metodo, poiché la codifica del rilevamento automatico non viene eseguita fino alla prima chiamata a un Read metodo.

Per impostazione predefinita, un StreamReader oggetto non è thread safe. Vedere TextReader.Synchronized per un wrapper thread-safe.

Il Read(Char[], Int32, Int32) metodo e Write(Char[], Int32, Int32) esegue l'overload count di lettura e scrittura del numero di caratteri specificati dal parametro. Questi elementi devono essere distinti da BufferedStream.Read e BufferedStream.Write, che leggono e scrivono il numero di byte specificati dal count parametro. Usare i BufferedStream metodi solo per la lettura e la scrittura di un numero integrale di elementi matrice di byte.

Nota

Quando si legge da un Streamoggetto , è più efficiente usare un buffer che corrisponde alla stessa dimensione del buffer interno del flusso.

Per un elenco di attività di I/O comuni, vedere Attività di I/O comuni.

Costruttori

StreamReader(Stream)

Inizializza una nuova istanza della classe StreamReader per il flusso specificato.

StreamReader(Stream, Boolean)

Inizializza una nuova istanza della classe StreamReader per il flusso specificato, con l'opzione specificata per il rilevamento dei byte order mark.

StreamReader(Stream, Encoding)

Inizializza una nuova istanza della classe StreamReader per il flusso specificato, con la codifica dei caratteri specificata.

StreamReader(Stream, Encoding, Boolean)

Inizializza una nuova istanza della classe StreamReader per il flusso specificato, con la codifica dei caratteri e l'opzione per il rilevamento dei byte order mark specificati.

StreamReader(Stream, Encoding, Boolean, Int32)

Inizializza una nuova istanza della classe StreamReader per il flusso specificato, con la codifica dei caratteri, l'opzione per il rilevamento dei byte order mark e le dimensioni del buffer specificati.

StreamReader(Stream, Encoding, Boolean, Int32, Boolean)

Inizializza una nuova istanza della classe StreamReader per il flusso specificato in base alla codifica caratteri, all'opzione per il rilevamento dei byte order mark e alle dimensioni del buffer specificati. Facoltativamente mantiene aperto il flusso.

StreamReader(String)

Inizializza una nuova istanza della classe StreamReader per il nome file specificato.

StreamReader(String, Boolean)

Inizializza una nuova istanza della classe StreamReader per il nome file specificato, con l'opzione specificata per il rilevamento dei byte order mark.

StreamReader(String, Encoding)

Inizializza una nuova istanza della classe StreamReader per il nome file specificato, con la codifica dei caratteri specificata.

StreamReader(String, Encoding, Boolean)

Inizializza una nuova istanza della classe StreamReader per il nome file specificato, con la codifica caratteri e l'opzione per il rilevamento dei byte order mark specificati.

StreamReader(String, Encoding, Boolean, FileStreamOptions)

Inizializza una nuova istanza della StreamReader classe per il percorso del file specificato, con la codifica dei caratteri specificata, l'opzione di rilevamento dei contrassegni dell'ordine di byte e configurata con l'oggetto specificato FileStreamOptions .

StreamReader(String, Encoding, Boolean, Int32)

Inizializza una nuova istanza della classe StreamReader per il nome file specificato, con la codifica caratteri, l'opzione per il rilevamento dei byte order mark e le dimensioni del buffer specificati.

StreamReader(String, FileStreamOptions)

Inizializza una nuova istanza della StreamReader classe per il percorso file specificato, usando la codifica predefinita, abilitando il rilevamento dei contrassegni di ordine di byte all'inizio del file e configurato con l'oggetto specificato FileStreamOptions .

Campi

Null

Oggetto StreamReader che include un flusso vuoto.

Proprietà

BaseStream

Restituisce il flusso sottostante.

CurrentEncoding

Ottiene la codifica caratteri corrente usata dall'oggetto StreamReader corrente.

EndOfStream

Ottiene un valore che indica se la posizione corrente del flusso è alla fine del flusso.

Metodi

Close()

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

Close()

Chiude l'oggetto TextReader e libera tutte le risorse di sistema associate a TextReader.

(Ereditato da TextReader)
CreateObjRef(Type)

Consente di creare un oggetto che contiene tutte le informazioni rilevanti necessarie per la generazione del proxy utilizzato per effettuare la comunicazione con un oggetto remoto.

(Ereditato da MarshalByRefObject)
DiscardBufferedData()

Cancella il buffer interno.

Dispose()

Rilascia tutte le risorse usate dall'oggetto TextReader.

(Ereditato da TextReader)
Dispose(Boolean)

Chiude il flusso sottostante, rilascia le risorse non gestite usate dall'oggetto StreamReader e, facoltativamente, rilascia le risorse gestite.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetLifetimeService()
Obsoleti.

Consente di recuperare l'oggetto servizio di durata corrente per controllare i criteri di durata per l'istanza.

(Ereditato da MarshalByRefObject)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
InitializeLifetimeService()
Obsoleti.

Ottiene un oggetto servizio di durata per controllare i criteri di durata per questa istanza.

(Ereditato da MarshalByRefObject)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
MemberwiseClone(Boolean)

Crea una copia dei riferimenti dell'oggetto MarshalByRefObject corrente.

(Ereditato da MarshalByRefObject)
Peek()

Restituisce il carattere successivo disponibile senza usarlo.

Read()

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

Read(Char[], Int32, Int32)

Legge un numero massimo specificato di caratteri dal flusso corrente e scrive i dati in un buffer, iniziando dall'indice specificato.

Read(Span<Char>)

Legge i caratteri dal flusso corrente in un intervallo.

Read(Span<Char>)

Legge i caratteri dal lettore corrente e scrive i dati nel buffer specificato.

(Ereditato da TextReader)
ReadAsync(Char[], Int32, Int32)

Legge in modo asincrono un numero massimo specificato di caratteri dal flusso corrente e scrive i dati in un buffer, a partire dall'indice specificato.

ReadAsync(Char[], Int32, Int32)

Legge un numero massimo specificato di caratteri dal lettore di testo corrente in modo asincrono e scrive i dati in un buffer, a partire dall'indice specificato.

(Ereditato da TextReader)
ReadAsync(Memory<Char>, CancellationToken)

Legge in modo asincrono i caratteri dal flusso corrente in un blocco di memoria.

ReadAsync(Memory<Char>, CancellationToken)

Legge in modo asincrono i caratteri dal flusso corrente in un blocco di memoria.

(Ereditato da TextReader)
ReadBlock(Char[], Int32, Int32)

Legge un numero massimo specificato di caratteri dal flusso corrente e scrive i dati in un buffer, a partire dall'indice specificato.

ReadBlock(Char[], Int32, Int32)

Legge un numero massimo specificato di caratteri dal lettore di testo corrente e scrive i dati in un buffer, a partire dall'indice specificato.

(Ereditato da TextReader)
ReadBlock(Span<Char>)

Legge i caratteri dal flusso corrente e scrive i dati in un buffer.

ReadBlock(Span<Char>)

Legge i caratteri dal flusso corrente e scrive i dati in un buffer.

(Ereditato da TextReader)
ReadBlockAsync(Char[], Int32, Int32)

Legge in modo asincrono un numero massimo specificato di caratteri dal flusso corrente e scrive i dati in un buffer, a partire dall'indice specificato.

ReadBlockAsync(Char[], Int32, Int32)

Legge un numero massimo specificato di caratteri dal lettore di testo corrente in modo asincrono e scrive i dati in un buffer, a partire dall'indice specificato.

(Ereditato da TextReader)
ReadBlockAsync(Memory<Char>, CancellationToken)

Legge in modo asincrono i caratteri dal flusso corrente e scrive i dati in un buffer.

ReadBlockAsync(Memory<Char>, CancellationToken)

Legge in modo asincrono i caratteri dal flusso corrente e scrive i dati in un buffer.

(Ereditato da TextReader)
ReadLine()

Legge una riga di caratteri dal flusso corrente e restituisce i dati come stringa.

ReadLineAsync()

Legge una riga di caratteri in modo asincrono dal flusso corrente e restituisce i dati come stringa.

ReadLineAsync()

Legge una riga di caratteri in modo asincrono e restituisce i dati come stringa.

(Ereditato da TextReader)
ReadLineAsync(CancellationToken)

Legge una riga di caratteri in modo asincrono dal flusso corrente e restituisce i dati come stringa.

ReadLineAsync(CancellationToken)

Legge una riga di caratteri in modo asincrono e restituisce i dati come stringa.

(Ereditato da TextReader)
ReadToEnd()

Legge tutti i caratteri dalla posizione corrente fino alla fine del flusso.

ReadToEndAsync()

Legge tutti i caratteri dalla posizione corrente fino alla fine del flusso in modo asincrono e li restituisce come singola stringa.

ReadToEndAsync()

Legge in modo asincrono tutti i caratteri dalla posizione corrente fino alla fine del lettore di testo e li restituisce come singola stringa.

(Ereditato da TextReader)
ReadToEndAsync(CancellationToken)

Legge tutti i caratteri dalla posizione corrente fino alla fine del flusso in modo asincrono e li restituisce come singola stringa.

ReadToEndAsync(CancellationToken)

Legge in modo asincrono tutti i caratteri dalla posizione corrente fino alla fine del lettore di testo e li restituisce come singola stringa.

(Ereditato da TextReader)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

IDisposable.Dispose()

Per una descrizione di questo membro, vedere Dispose().

(Ereditato da TextReader)

Si applica a

Vedi anche