Freigeben über


StreamReader Klasse

Definition

Implementiert ein TextReader Objekt, das Zeichen aus einem Bytedatenstrom in einer bestimmten Codierung liest.

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
Vererbung
StreamReader
Vererbung
Attribute

Beispiele

Im folgenden Beispiel wird eine Instanz zum Lesen von StreamReader Text aus einer Datei verwendet. Der in diesem Beispiel verwendete Konstruktor wird für die Verwendung in Windows Store-Apps nicht unterstützt.

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

Im folgenden Beispiel wird ein StreamReader Objekt instanziiert und seine ReadAsync Methode aufgerufen, um eine Datei asynchron zu lesen.

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.

Hinweise

StreamReader ist für die Zeicheneingabe in einer bestimmten Codierung konzipiert, während die Stream Klasse für Byteeingaben und -ausgaben ausgelegt ist. Wird zum Lesen von Informationszeilen aus einer Standardtextdatei verwendet StreamReader .

Von Bedeutung

Dieser Typ implementiert die IDisposable Schnittstelle. Nach Abschluss der Verwendung sollten Sie den Typ entweder direkt oder indirekt löschen. Rufen Sie die Methode Dispose in einem try/catch-Block auf, um den Typ direkt zu entsorgen. Verwenden Sie zum indirekten Löschen ein Sprachkonstrukt wie using (in C#) oder Using (in Visual Basic). Weitere Informationen finden Sie im Abschnitt "Verwenden eines Objekts, das IDisposable implementiert" im IDisposable Schnittstellenthema.

StreamReader standardmäßig die UTF-8-Codierung, sofern nicht anders angegeben, statt die ANSI-Codepage für das aktuelle System zu verwenden. UTF-8 behandelt Unicode-Zeichen richtig und liefert konsistente Ergebnisse für lokalisierte Versionen des Betriebssystems. Wenn Sie die aktuelle Zeichencodierung mithilfe der CurrentEncoding Eigenschaft erhalten, ist der Wert erst nach der ersten Read Methode zuverlässig, da die automatische Codierung erst nach dem ersten Aufruf einer Read Methode erfolgt.

Standardmäßig ist ein StreamReader Thread nicht sicher. Ein threadsicherer Wrapper finden Sie TextReader.Synchronized unter

Die Read(Char[], Int32, Int32) Und Write(Char[], Int32, Int32) Methodenüberladungen lesen und schreiben die Anzahl von Zeichen, die durch den count Parameter angegeben werden. Diese sind zu unterscheiden von BufferedStream.Read und BufferedStream.Write, die die Anzahl der durch den count Parameter angegebenen Bytes lesen und schreiben. Verwenden Sie die BufferedStream Methoden nur zum Lesen und Schreiben einer integralen Anzahl von Bytearrayelementen.

Hinweis

Beim Lesen aus einem StreamDatenstrom ist es effizienter, einen Puffer zu verwenden, der die gleiche Größe wie der interne Puffer des Datenstroms aufweist.

Eine Liste allgemeiner E/A-Aufgaben finden Sie unter "Allgemeine E/A-Aufgaben".

Konstruktoren

Name Beschreibung
StreamReader(Stream, Boolean)

Initialisiert eine neue Instanz der StreamReader Klasse für den angegebenen Datenstrom mit der angegebenen Bytereihenfolgenmarkerkennungsoption.

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

Initialisiert eine neue Instanz der StreamReader Klasse für den angegebenen Datenstrom basierend auf der angegebenen Zeichencodierung, der Erkennungsoption für Bytereihenfolgezeichen und der Puffergröße und lässt optional den Datenstrom geöffnet.

StreamReader(Stream, Encoding, Boolean, Int32)

Initialisiert eine neue Instanz der StreamReader Klasse für den angegebenen Datenstrom mit der angegebenen Zeichencodierung, der Erkennungsoption für Bytereihenfolgezeichen und der Puffergröße.

StreamReader(Stream, Encoding, Boolean)

Initialisiert eine neue Instanz der StreamReader Klasse für den angegebenen Datenstrom mit der angegebenen Zeichencodierung und der Erkennungsoption für Bytereihenfolgenzeichen.

StreamReader(Stream, Encoding)

Initialisiert eine neue Instanz der StreamReader Klasse für den angegebenen Datenstrom mit der angegebenen Zeichencodierung.

StreamReader(Stream)

Initialisiert eine neue Instanz der StreamReader Klasse für den angegebenen Datenstrom.

StreamReader(String, Boolean)

Initialisiert eine neue Instanz der StreamReader Klasse für den angegebenen Dateinamen mit der angegebenen Bytereihenfolgenmarkerkennungsoption.

StreamReader(String, Encoding, Boolean, FileStreamOptions)

Initialisiert eine neue Instanz der StreamReader Klasse für den angegebenen Dateipfad mit der angegebenen Zeichencodierung, der Erkennungsoption für Bytereihenfolgezeichen und der Konfiguration mit dem angegebenen FileStreamOptions Objekt.

StreamReader(String, Encoding, Boolean, Int32)

Initialisiert eine neue Instanz der StreamReader Klasse für den angegebenen Dateinamen mit der angegebenen Zeichencodierung, der Erkennungsoption für Bytereihenfolgezeichen und der Puffergröße.

StreamReader(String, Encoding, Boolean)

Initialisiert eine neue Instanz der StreamReader Klasse für den angegebenen Dateinamen mit der angegebenen Zeichencodierung und der Erkennungsoption für Bytereihenfolgenzeichen.

StreamReader(String, Encoding)

Initialisiert eine neue Instanz der StreamReader Klasse für den angegebenen Dateinamen mit der angegebenen Zeichencodierung.

StreamReader(String, FileStreamOptions)

Initialisiert eine neue Instanz der StreamReader Klasse für den angegebenen Dateipfad, wobei die Standardcodierung verwendet wird, wodurch die Erkennung von Bytereihenfolgemarkierungen am Anfang der Datei aktiviert und mit dem angegebenen FileStreamOptions Objekt konfiguriert wird.

StreamReader(String)

Initialisiert eine neue Instanz der StreamReader Klasse für den angegebenen Dateinamen.

Felder

Name Beschreibung
Null

Ein StreamReader Objekt um einen leeren Datenstrom.

Eigenschaften

Name Beschreibung
BaseStream

Gibt den zugrunde liegenden Datenstrom zurück.

CurrentEncoding

Ruft die aktuelle Zeichencodierung ab, die das aktuelle StreamReader Objekt verwendet.

EndOfStream

Ruft einen Wert ab, der angibt, ob sich die aktuelle Datenstromposition am Ende des Datenstroms befindet.

Methoden

Name Beschreibung
Close()

Schließt das StreamReader Objekt und den zugrunde liegenden Datenstrom und gibt alle Systemressourcen frei, die dem Leser zugeordnet sind.

CreateObjRef(Type)

Erstellt ein Objekt, das alle relevanten Informationen enthält, die zum Generieren eines Proxys erforderlich sind, der für die Kommunikation mit einem Remoteobjekt verwendet wird.

(Geerbt von MarshalByRefObject)
DiscardBufferedData()

Löscht den internen Puffer.

Dispose()

Gibt alle vom TextReader Objekt verwendeten Ressourcen frei.

(Geerbt von TextReader)
Dispose(Boolean)

Schließt den zugrunde liegenden Datenstrom, gibt die nicht verwalteten Ressourcen frei, die von den StreamReaderverwalteten Ressourcen verwendet werden, und gibt optional die verwalteten Ressourcen frei.

Equals(Object)

Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht.

(Geerbt von Object)
GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetLifetimeService()
Veraltet.

Ruft das aktuelle Lebensdauerdienstobjekt ab, das die Lebensdauerrichtlinie für diese Instanz steuert.

(Geerbt von MarshalByRefObject)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
InitializeLifetimeService()
Veraltet.

Ruft ein Lebensdauerdienstobjekt ab, um die Lebensdauerrichtlinie für diese Instanz zu steuern.

(Geerbt von MarshalByRefObject)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
MemberwiseClone(Boolean)

Erstellt eine flache Kopie des aktuellen MarshalByRefObject Objekts.

(Geerbt von MarshalByRefObject)
Peek()

Gibt das nächste verfügbare Zeichen zurück, verwendet es jedoch nicht.

Read()

Liest das nächste Zeichen aus dem Eingabedatenstrom und wechselt die Zeichenposition um ein Zeichen.

Read(Char[], Int32, Int32)

Liest ein angegebenes Maximum von Zeichen aus dem aktuellen Datenstrom in einen Puffer, beginnend am angegebenen Index.

Read(Span<Char>)

Liest die Zeichen aus dem aktuellen Datenstrom in eine Spanne.

ReadAsync(Char[], Int32, Int32)

Liest eine angegebene maximale Anzahl von Zeichen aus dem aktuellen Datenstrom asynchron und schreibt die Daten in einen Puffer, beginnend am angegebenen Index.

ReadAsync(Memory<Char>, CancellationToken)

Liest die Zeichen aus dem aktuellen Datenstrom asynchron in einen Speicherblock.

ReadBlock(Char[], Int32, Int32)

Liest eine angegebene maximale Anzahl von Zeichen aus dem aktuellen Datenstrom und schreibt die Daten in einen Puffer, beginnend am angegebenen Index.

ReadBlock(Char[], Int32, Int32)

Liest eine angegebene maximale Anzahl von Zeichen aus dem aktuellen Textleser und schreibt die Daten in einen Puffer, beginnend am angegebenen Index.

(Geerbt von TextReader)
ReadBlock(Span<Char>)

Liest die Zeichen aus dem aktuellen Datenstrom und schreibt die Daten in einen Puffer.

ReadBlockAsync(Char[], Int32, Int32)

Liest eine angegebene maximale Anzahl von Zeichen aus dem aktuellen Datenstrom asynchron und schreibt die Daten in einen Puffer, beginnend am angegebenen Index.

ReadBlockAsync(Memory<Char>, CancellationToken)

Liest die Zeichen asynchron aus dem aktuellen Datenstrom und schreibt die Daten in einen Puffer.

ReadLine()

Liest eine Zeichenzeile aus dem aktuellen Datenstrom und gibt die Daten als Zeichenfolge zurück.

ReadLineAsync()

Liest eine Zeichenzeile asynchron aus dem aktuellen Datenstrom und gibt die Daten als Zeichenfolge zurück.

ReadLineAsync(CancellationToken)

Liest eine Zeichenzeile asynchron aus dem aktuellen Datenstrom und gibt die Daten als Zeichenfolge zurück.

ReadToEnd()

Liest alle Zeichen von der aktuellen Position bis zum Ende des Datenstroms.

ReadToEndAsync()

Liest alle Zeichen von der aktuellen Position bis zum Ende des Datenstroms asynchron und gibt sie als eine Zeichenfolge zurück.

ReadToEndAsync(CancellationToken)

Liest alle Zeichen von der aktuellen Position bis zum Ende des Datenstroms asynchron und gibt sie als eine Zeichenfolge zurück.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

Name Beschreibung
IDisposable.Dispose()

Eine Beschreibung dieses Mitglieds finden Sie unter Dispose().

(Geerbt von TextReader)

Gilt für:

Weitere Informationen