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 utilizzata un'istanza di StreamReader per leggere testo da un file. Il costruttore usato in questo esempio non è supportato per l'uso nelle app di Windows Store.

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 di caratteri in una particolare codifica, mentre la classe è progettata per l'input e l'output Stream dei byte. Utilizzare StreamReader per leggere le righe di informazioni da un file di testo standard.

Importante

Questo tipo implementa l'interfaccia IDisposable . Al termine dell'uso del tipo, è necessario eliminarlo direttamente o indirettamente. Per eliminare direttamente il tipo, chiamare il Dispose relativo metodo in un try/catch blocco. Per eliminarlo indirettamente, usare un costrutto del linguaggio, ad using esempio (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 per impostazione predefinita, la codifica UTF-8 viene impostata su UTF-8, a meno che non venga specificata diversamente, anziché la 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 fino a quando il primo Read metodo non viene eseguito, poiché il rilevamento automatico della codifica non viene eseguito fino alla prima chiamata a un Read metodo.

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

L'overload del Read(Char[], Int32, Int32) metodo e Write(Char[], Int32, Int32) legge e scrive il numero di caratteri specificato dal count parametro . Devono essere distinti da BufferedStream.Read e BufferedStream.Write, che leggono e scrivono il numero di byte specificati dal count parametro . Utilizzare i BufferedStream metodi solo per la lettura e la scrittura di un numero integrale di elementi della matrice di byte.

Annotazioni

Quando si legge da , Streamè più efficiente usare un buffer con le stesse dimensioni del buffer interno del flusso.

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

Costruttori

Nome Descrizione
StreamReader(Stream, Boolean)

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

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

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

StreamReader(Stream, Encoding, Boolean, Int32)

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

StreamReader(Stream, Encoding, Boolean)

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

StreamReader(Stream, Encoding)

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

StreamReader(Stream)

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

StreamReader(String, Boolean)

Inizializza una nuova istanza della StreamReader classe per il nome file specificato, con l'opzione di rilevamento del contrassegno dell'ordine dei byte specificata.

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 byte order mark e configurata con l'oggetto specificato FileStreamOptions .

StreamReader(String, Encoding, Boolean, Int32)

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

StreamReader(String, Encoding, Boolean)

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

StreamReader(String, Encoding)

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

StreamReader(String, FileStreamOptions)

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

StreamReader(String)

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

Campi

Nome Descrizione
Null

Oggetto StreamReader intorno a un flusso vuoto.

Proprietà

Nome Descrizione
BaseStream

Restituisce il flusso sottostante.

CurrentEncoding

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

EndOfStream

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

Metodi

Nome Descrizione
Close()

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

CreateObjRef(Type)

Crea un oggetto che contiene tutte le informazioni pertinenti necessarie per generare un proxy utilizzato per comunicare con un oggetto remoto.

(Ereditato da MarshalByRefObject)
DiscardBufferedData()

Cancella il buffer interno.

Dispose()

Rilascia tutte le risorse utilizzate dall'oggetto TextReader .

(Ereditato da TextReader)
Dispose(Boolean)

Chiude il flusso sottostante, rilascia le risorse non gestite usate da StreamReadere, 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.

Recupera l'oggetto servizio di durata corrente che controlla i criteri di durata per questa istanza.

(Ereditato da MarshalByRefObject)
GetType()

Ottiene il 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 del Objectcorrente.

(Ereditato da Object)
MemberwiseClone(Boolean)

Crea una copia superficiale dell'oggetto corrente MarshalByRefObject .

(Ereditato da MarshalByRefObject)
Peek()

Restituisce il carattere disponibile successivo, ma non lo utilizza.

Read()

Legge il carattere successivo dal flusso di input e sposta in avanti la posizione del carattere di un carattere.

Read(Char[], Int32, Int32)

Legge un massimo di caratteri specificato dal flusso corrente in un buffer, a partire dall'indice specificato.

Read(Span<Char>)

Legge i caratteri dal flusso corrente in un intervallo.

ReadAsync(Char[], Int32, Int32)

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

ReadAsync(Memory<Char>, CancellationToken)

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

ReadBlock(Char[], Int32, Int32)

Legge un numero massimo di caratteri specificato 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.

ReadBlockAsync(Char[], Int32, Int32)

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

ReadBlockAsync(Memory<Char>, CancellationToken)

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

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(CancellationToken)

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

ReadToEnd()

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

ReadToEndAsync()

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

ReadToEndAsync(CancellationToken)

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

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

Nome Descrizione
IDisposable.Dispose()

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

(Ereditato da TextReader)

Si applica a

Vedi anche