Sdílet prostřednictvím


StreamReader Třída

Definice

Implementuje TextReader znak, který čte znaky z datového proudu bajtů v konkrétním kódování.

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
Dědičnost
StreamReader
Dědičnost
Atributy

Příklady

Následující příklad používá instanci pro StreamReader čtení textu ze souboru. Konstruktor použitý v tomto příkladu není podporován pro použití v aplikacích pro 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

Následující příklad vytvoří instanci objektu StreamReader a zavolá jeho ReadAsync metodu pro asynchronní čtení souboru.

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.

Poznámky

StreamReader je určen pro zadávání znaků v konkrétním kódování, zatímco Stream třída je určena pro bajtový vstup a výstup. Slouží StreamReader ke čtení řádků informací ze standardního textového souboru.

Důležité

Tento typ implementuje IDisposable rozhraní. Po dokončení používání tohoto typu byste ho měli přímo nebo nepřímo odstranit. Pokud chcete odstranit typ přímo, zavolejte jeho Dispose metodu try/catch v bloku. Pokud ho chcete odstranit nepřímo, použijte konstruktor jazyka, například using (v jazyce C#) nebo Using (v jazyce Visual Basic). Další informace najdete v části "Použití objektu, který implementuje IDisposable" v IDisposable tématu rozhraní.

StreamReader výchozí kódování UTF-8, pokud není uvedeno jinak, namísto výchozí znakové stránky ANSI pro aktuální systém. UTF-8 zpracovává správně znaky Unicode a poskytuje konzistentní výsledky v lokalizovaných verzích operačního systému. Pokud aktuální kódování znaků získáte pomocí CurrentEncoding vlastnosti, hodnota nebude spolehlivá až po první Read metodě, protože kódování automatické detekce se provede až při prvním volání Read metody.

Ve výchozím nastavení není bezpečný z StreamReader více vláken. Podívejte TextReader.Synchronized se na obálku bezpečnou pro vlákna.

Metoda Read(Char[], Int32, Int32) a Write(Char[], Int32, Int32) přetíží čtení a zápisu počtu znaků zadaných parametrem count . Ty se odlišují od BufferedStream.Read a BufferedStream.Write, které čtou a zapisují počet bajtů určený parametrem count . Metody používejte BufferedStream pouze pro čtení a zápis celočíselného počtu prvků bajtového pole.

Poznámka

Při čtení z Streamnástroje je efektivnější použít vyrovnávací paměť, která má stejnou velikost jako interní vyrovnávací paměť datového proudu.

Seznam běžných vstupně-výstupních úloh najdete v tématu Běžné vstupně-výstupní úlohy.

Konstruktory

StreamReader(Stream)

Inicializuje novou instanci StreamReader třídy pro zadaný datový proud.

StreamReader(Stream, Boolean)

Inicializuje novou instanci StreamReader třídy pro zadaný datový proud se zadanou možností detekce značky pořadí bajtů.

StreamReader(Stream, Encoding)

Inicializuje novou instanci StreamReader třídy pro zadaný datový proud se zadaným kódováním znaků.

StreamReader(Stream, Encoding, Boolean)

Inicializuje novou instanci StreamReader třídy pro zadaný datový proud se zadaným kódováním znaků a možností detekce značky pořadí bajtů.

StreamReader(Stream, Encoding, Boolean, Int32)

Inicializuje novou instanci StreamReader třídy pro zadaný datový proud se zadaným kódováním znaků, možností detekce značky pořadí bajtů a velikostí vyrovnávací paměti.

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

Inicializuje novou instanci třídy pro zadaný datový proud na základě zadaného StreamReader kódování znaků, možnosti detekce značky pořadí bajtů a velikosti vyrovnávací paměti a volitelně ponechá datový proud otevřený.

StreamReader(String)

Inicializuje novou instanci StreamReader třídy pro zadaný název souboru.

StreamReader(String, Boolean)

Inicializuje novou instanci StreamReader třídy pro zadaný název souboru se zadanou možností detekce pořadí bajtů.

StreamReader(String, Encoding)

Inicializuje novou instanci StreamReader třídy pro zadaný název souboru se zadaným kódováním znaků.

StreamReader(String, Encoding, Boolean)

Inicializuje novou instanci StreamReader třídy pro zadaný název souboru se zadaným kódováním znaků a možností detekce značky pořadí bajtů.

StreamReader(String, Encoding, Boolean, FileStreamOptions)

Inicializuje novou instanci StreamReader třídy pro zadanou cestu k souboru se zadaným kódováním znaků, možností detekce značky pořadí bajtů a nakonfigurovaným se zadaným FileStreamOptions objektem.

StreamReader(String, Encoding, Boolean, Int32)

Inicializuje novou instanci StreamReader třídy pro zadaný název souboru se zadaným kódováním znaků, možností detekce značky pořadí bajtů a velikostí vyrovnávací paměti.

StreamReader(String, FileStreamOptions)

Inicializuje novou instanci StreamReader třídy pro zadanou cestu k souboru pomocí výchozího kódování, povolení detekce značek pořadí bajtů na začátku souboru a nakonfigurované s určeným FileStreamOptions objektem.

Pole

Null

Objekt StreamReader kolem prázdného datového proudu.

Vlastnosti

BaseStream

Vrátí podkladový datový proud.

CurrentEncoding

Získá aktuální kódování znaků, které aktuální StreamReader objekt používá.

EndOfStream

Získá hodnotu, která označuje, zda aktuální pozice streamu je na konci datového proudu.

Metody

Close()

StreamReader Zavře objekt a podkladový datový proud a uvolní všechny systémové prostředky přidružené ke čtenáři.

Close()

TextReader Zavře a uvolní všechny systémové prostředky přidružené k TextReader.

(Zděděno od TextReader)
CreateObjRef(Type)

Vytvoří objekt, který obsahuje všechny relevantní informace potřebné k vygenerování proxy používaného ke komunikaci se vzdáleným objektem.

(Zděděno od MarshalByRefObject)
DiscardBufferedData()

Vymaže vnitřní vyrovnávací paměť.

Dispose()

Uvolní všechny prostředky používané objektem TextReader .

(Zděděno od TextReader)
Dispose(Boolean)

Zavře podkladový datový proud, uvolní nespravované prostředky používané StreamReadernástrojem a volitelně uvolní spravované prostředky.

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetLifetimeService()
Zastaralé.

Načte objekt služby aktuální životnosti, který řídí zásady životnosti pro tuto instanci.

(Zděděno od MarshalByRefObject)
GetType()

Získá aktuální Type instanci.

(Zděděno od Object)
InitializeLifetimeService()
Zastaralé.

Získá objekt služby životnosti, který řídí zásady životnosti pro tuto instanci.

(Zděděno od MarshalByRefObject)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
MemberwiseClone(Boolean)

Vytvoří mělkou kopii aktuálního MarshalByRefObject objektu.

(Zděděno od MarshalByRefObject)
Peek()

Vrátí další dostupný znak, ale nespotřebuje ho.

Read()

Přečte další znak ze vstupního datového proudu a posune pozici znaku o jeden znak.

Read(Char[], Int32, Int32)

Přečte zadané maximum znaků z aktuálního datového proudu do vyrovnávací paměti počínaje zadaným indexem.

Read(Span<Char>)

Přečte znaky z aktuálního datového proudu do rozsahu.

Read(Span<Char>)

Přečte znaky od aktuálního čtenáře a zapíše data do zadané vyrovnávací paměti.

(Zděděno od TextReader)
ReadAsync(Char[], Int32, Int32)

Přečte asynchronně zadaný maximální počet znaků z aktuálního datového proudu a zapíše data do vyrovnávací paměti počínaje zadaným indexem.

ReadAsync(Char[], Int32, Int32)

Přečte asynchronně zadaný maximální počet znaků z aktuální čtečky textu a zapíše data do vyrovnávací paměti počínaje zadaným indexem.

(Zděděno od TextReader)
ReadAsync(Memory<Char>, CancellationToken)

Asynchronně přečte znaky z aktuálního datového proudu do bloku paměti.

ReadAsync(Memory<Char>, CancellationToken)

Asynchronně přečte znaky z aktuálního datového proudu do bloku paměti.

(Zděděno od TextReader)
ReadBlock(Char[], Int32, Int32)

Přečte zadaný maximální počet znaků z aktuálního datového proudu a zapíše data do vyrovnávací paměti počínaje zadaným indexem.

ReadBlock(Char[], Int32, Int32)

Přečte zadaný maximální počet znaků z aktuální čtečky textu a zapíše data do vyrovnávací paměti počínaje zadaným indexem.

(Zděděno od TextReader)
ReadBlock(Span<Char>)

Přečte znaky z aktuálního datového proudu a zapíše data do vyrovnávací paměti.

ReadBlock(Span<Char>)

Přečte znaky z aktuálního datového proudu a zapíše data do vyrovnávací paměti.

(Zděděno od TextReader)
ReadBlockAsync(Char[], Int32, Int32)

Přečte asynchronně zadaný maximální počet znaků z aktuálního datového proudu a zapíše data do vyrovnávací paměti počínaje zadaným indexem.

ReadBlockAsync(Char[], Int32, Int32)

Přečte asynchronně zadaný maximální počet znaků z aktuální čtečky textu a zapíše data do vyrovnávací paměti počínaje zadaným indexem.

(Zděděno od TextReader)
ReadBlockAsync(Memory<Char>, CancellationToken)

Asynchronně přečte znaky z aktuálního datového proudu a zapíše data do vyrovnávací paměti.

ReadBlockAsync(Memory<Char>, CancellationToken)

Asynchronně přečte znaky z aktuálního datového proudu a zapíše data do vyrovnávací paměti.

(Zděděno od TextReader)
ReadLine()

Přečte řádek znaků z aktuálního datového proudu a vrátí data jako řetězec.

ReadLineAsync()

Čte asynchronně řádek znaků z aktuálního datového proudu a vrátí data jako řetězec.

ReadLineAsync()

Přečte řádek znaků asynchronně a vrátí data jako řetězec.

(Zděděno od TextReader)
ReadLineAsync(CancellationToken)

Čte asynchronně řádek znaků z aktuálního datového proudu a vrátí data jako řetězec.

ReadLineAsync(CancellationToken)

Přečte řádek znaků asynchronně a vrátí data jako řetězec.

(Zděděno od TextReader)
ReadToEnd()

Přečte všechny znaky od aktuální pozice až po konec datového proudu.

ReadToEndAsync()

Přečte asynchronně všechny znaky od aktuální pozice do konce datového proudu a vrátí je jako jeden řetězec.

ReadToEndAsync()

Přečte asynchronně všechny znaky od aktuální pozice do konce čtečky textu a vrátí je jako jeden řetězec.

(Zděděno od TextReader)
ReadToEndAsync(CancellationToken)

Přečte asynchronně všechny znaky od aktuální pozice do konce datového proudu a vrátí je jako jeden řetězec.

ReadToEndAsync(CancellationToken)

Přečte asynchronně všechny znaky od aktuální pozice do konce čtečky textu a vrátí je jako jeden řetězec.

(Zděděno od TextReader)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Explicitní implementace rozhraní

IDisposable.Dispose()

Popis tohoto člena najdete v tématu Dispose().

(Zděděno od TextReader)

Platí pro

Viz také