StreamReader Classe

Definição

Implementa um TextReader que lê caracteres de um fluxo de bytes numa codificação específica.

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
Herança
StreamReader
Herança
Atributos

Exemplos

O exemplo seguinte utiliza uma instância de StreamReader para ler texto de um ficheiro. O construtor usado neste exemplo não é suportado para uso em aplicações da 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

O exemplo seguinte instancia um StreamReader objeto e chama o seu ReadAsync método para ler um ficheiro de forma assíncrona.

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.

Observações

StreamReader é concebido para entrada de caracteres numa codificação específica, enquanto a Stream classe é concebida para entrada e saída por bytes. Usar StreamReader para ler linhas de informação de um ficheiro de texto padrão.

Important

Este tipo implementa a interface IDisposable. Quando terminar de usar o tipo, você deve eliminá-lo direta ou indiretamente. Para descartar o tipo diretamente, chame seu método Dispose em um bloco try/catch. Para descartá-lo indiretamente, use uma construção de linguagem como using (em C#) ou Using (em Visual Basic). Para obter mais informações, consulte a seção "Usando um objeto que implementa IDisposable" no tópico da IDisposable interface.

StreamReader por defeito é a codificação UTF-8, salvo indicação em contrário, em vez de usar por defeito a página de códigos ANSI do sistema atual. O UTF-8 lida corretamente com caracteres Unicode e fornece resultados consistentes em versões localizadas do sistema operativo. Se obtiver a codificação atual de caracteres usando a CurrentEncoding propriedade, o valor não é fiável até depois do primeiro Read método, uma vez que a deteção automática da codificação só é feita na primeira chamada a um Read método.

Por defeito, a StreamReader não é seguro para threads. Procura TextReader.Synchronized um invólucro seguro para fios.

O Read(Char[], Int32, Int32) método and Write(Char[], Int32, Int32) sobrecarrega a leitura e escrita o número de caracteres especificados pelo count parâmetro. Estes devem ser distinguidos de BufferedStream.Read e BufferedStream.Write, que leem e escrevem o número de bytes especificados pelo count parâmetro. Use os BufferedStream métodos apenas para ler e escrever um número inteiro de elementos do array de bytes.

Note

Ao ler de um Stream, é mais eficiente usar um buffer do mesmo tamanho que o buffer interno do fluxo.

Para uma lista de tarefas comuns de E/S, consulte Tarefas Comuns de E/S.

Construtores

Name Description
StreamReader(Stream, Boolean)

Inicializa uma nova instância da StreamReader classe para o fluxo especificado, com a opção de deteção de marca de ordem de bytes especificada.

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

Inicializa uma nova instância da StreamReader classe para o fluxo especificado com base na codificação de caracteres especificada, na opção de deteção de marca de ordem de bytes e no tamanho do buffer, e opcionalmente deixa o fluxo aberto.

StreamReader(Stream, Encoding, Boolean, Int32)

Inicializa uma nova instância da StreamReader classe para o fluxo especificado, com a codificação de caracteres especificada, a opção de deteção de marca de ordem de bytes e o tamanho do buffer.

StreamReader(Stream, Encoding, Boolean)

Inicializa uma nova instância da StreamReader classe para o fluxo especificado, com a opção de codificação de caracteres e deteção de marcação de ordem de bytes especificada.

StreamReader(Stream, Encoding)

Inicializa uma nova instância da StreamReader classe para o fluxo especificado, com a codificação de caracteres especificada.

StreamReader(Stream)

Inicializa uma nova instância da StreamReader classe para o fluxo especificado.

StreamReader(String, Boolean)

Inicializa uma nova instância da StreamReader classe para o nome de ficheiro especificado, com a opção de deteção de marca de ordem de bytes especificada.

StreamReader(String, Encoding, Boolean, Int32)

Inicializa uma nova instância da StreamReader classe para o nome de ficheiro especificado, com a codificação de caracteres especificada, opção de deteção de marca de ordem de bytes e tamanho do buffer.

StreamReader(String, Encoding, Boolean)

Inicializa uma nova instância da StreamReader classe para o nome de ficheiro especificado, com a codificação de caracteres e a opção de deteção de ordem de bytes especificada.

StreamReader(String, Encoding)

Inicializa uma nova instância da StreamReader classe para o nome de ficheiro especificado, com a codificação de caracteres especificada.

StreamReader(String)

Inicializa uma nova instância da StreamReader classe para o nome de ficheiro especificado.

Campos

Name Description
Null

Um StreamReader objeto à volta de um riacho vazio.

Propriedades

Name Description
BaseStream

Devolve o fluxo subjacente.

CurrentEncoding

Obtém a codificação atual de caracteres que o objeto atual StreamReader está a usar.

EndOfStream

Obtém um valor que indica se a posição atual do fluxo está no final do fluxo.

Métodos

Name Description
Close()

Fecha o StreamReader objeto e o fluxo subjacente, e liberta quaisquer recursos do sistema associados ao leitor.

CreateObjRef(Type)

Cria um objeto que contém toda a informação relevante necessária para gerar um proxy usado para comunicar com um objeto remoto.

(Herdado de MarshalByRefObject)
DiscardBufferedData()

Limpa o buffer interno.

Dispose()

Liberta todos os recursos usados pelo TextReader objeto.

(Herdado de TextReader)
Dispose(Boolean)

Fecha o fluxo subjacente, liberta os recursos não geridos usados pelo StreamReader, e opcionalmente liberta os recursos geridos.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetLifetimeService()

Recupera o objeto de serviço de tempo de vida atual que controla a política de vida útil neste caso.

(Herdado de MarshalByRefObject)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
InitializeLifetimeService()

Obtém-se um objeto de serviço vitalício para controlar a apólice vitalícia neste caso.

(Herdado de MarshalByRefObject)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
MemberwiseClone(Boolean)

Cria uma cópia superficial do objeto atual MarshalByRefObject .

(Herdado de MarshalByRefObject)
Peek()

Devolve o próximo personagem disponível mas não o consome.

Read()

Lê o próximo carácter do fluxo de entrada e avança a posição do carácter em um caractere.

Read(Char[], Int32, Int32)

Lê um máximo especificado de caracteres do fluxo atual para um buffer, começando no índice especificado.

Read(Span<Char>)

Lê os caracteres do fluxo atual para um intervalo.

ReadAsync(Char[], Int32, Int32)

Lê um número máximo especificado de caracteres do fluxo atual de forma assíncrona e escreve os dados num buffer, começando no índice especificado.

ReadAsync(Memory<Char>, CancellationToken)

Lê assíncronamente os caracteres do fluxo atual para um bloco de memória.

ReadBlock(Char[], Int32, Int32)

Lê um número máximo especificado de caracteres do fluxo atual e escreve os dados num buffer, começando no índice especificado.

ReadBlock(Char[], Int32, Int32)

Lê um número máximo especificado de caracteres do leitor de texto atual e escreve os dados num buffer, começando no índice especificado.

(Herdado de TextReader)
ReadBlock(Span<Char>)

Lê os caracteres do fluxo atual e escreve os dados num buffer.

ReadBlockAsync(Char[], Int32, Int32)

Lê um número máximo especificado de caracteres do fluxo atual de forma assíncrona e escreve os dados num buffer, começando no índice especificado.

ReadBlockAsync(Memory<Char>, CancellationToken)

Lê assíncronamente os caracteres do fluxo atual e escreve os dados num buffer.

ReadLine()

Lê uma linha de caracteres do fluxo atual e devolve os dados como uma cadeia de caracteres.

ReadLineAsync()

Lê uma linha de caracteres de forma assíncrona a partir do fluxo atual e devolve os dados como uma cadeia.

ReadToEnd()

Lê todos os caracteres desde a posição atual até ao fim do fluxo.

ReadToEndAsync()

Lê todos os caracteres da posição atual até ao fim do fluxo de forma assíncrona e devolve-os como uma única cadeia.

ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Implementações de Interface Explícita

Name Description
IDisposable.Dispose()

Para uma descrição deste elemento, veja Dispose().

(Herdado de TextReader)

Aplica-se a

Ver também