Freigeben über


StreamReader.ReadToEnd-Methode

Liest den Stream von der aktuellen Position bis zum Ende des Streams.

Namespace: System.IO
Assembly: mscorlib (in mscorlib.dll)

Syntax

'Declaration
Public Overrides Function ReadToEnd As String
'Usage
Dim instance As StreamReader
Dim returnValue As String

returnValue = instance.ReadToEnd
public override string ReadToEnd ()
public:
virtual String^ ReadToEnd () override
public String ReadToEnd ()
public override function ReadToEnd () : String

Rückgabewert

Der Rest des Streams als Zeichenfolge, von der aktuellen Position bis zum Ende. Wenn die aktuelle Position am Ende des Streams ist, wird eine leere Zeichenfolge ("") zurückgegeben.

Ausnahmen

Ausnahmetyp Bedingung

OutOfMemoryException

Es ist nicht genügend Speicherplatz vorhanden, um einen Puffer für die zurückgegebene Zeichenfolge zu reservieren.

IOException

Ein E/A-Fehler ist aufgetreten.

Hinweise

Diese Methode überschreibt die TextReader.ReadToEnd-Methode.

ReadToEnd ist besonders hilfreich, wenn Sie die gesamte Eingabe von der aktuellen Position bis zum Ende des Streams lesen möchten. Wenn eine größere Kontrolle über die Anzahl der aus dem Stream gelesenen Zeichen erforderlich ist, verwenden Sie die Read(Char[],Int32,Int32)-Methodenüberladung. Damit wird i. d. R. eine bessere Leistung erzielt.

Bei ReadToEnd wird vorausgesetzt, dass der Stream erkennt, wenn das Ende erreicht ist. Bei interaktiven Protokollen, bei denen der Server Daten nur auf Anforderung sendet und die Verbindung nicht schließt, kann ReadToEnd für einen unbestimmten Zeitraum blockieren und sollte nicht verwendet werden.

Beim Verwenden der Read-Methode ist es effizienter, einen Puffer mit der Größe des internen Puffers des Streams zu verwenden. Wenn die Größe des Puffers beim Erstellen des Streams nicht festgelegt wurde, beträgt die Standardgröße 4 KB (4.096 Bytes).

Wenn die aktuelle Methode eine OutOfMemoryException auslöst, wird die Position des Readers im zugrunde liegenden Stream-Objekt um die Anzahl von Zeichen weitergerückt, die die Methode lesen konnte, aber die bereits in den internen ReadLine-Puffer gelesenen Zeichen werden verworfen. Da die Position des Readers im Stream nicht geändert werden kann, können die bereits gelesenen Zeichen nicht wiederhergestellt werden. Auf diese kann nur nach erneuter Initialisierung des StreamReader-Objekts zugegriffen werden. Wenn die Ausgangsposition im Stream unbekannt ist oder der Stream keine Suche unterstützt, muss das zugrunde liegende Stream-Objekt ebenfalls neu initialisiert werden.

Um diese Situation zu vermeiden und stabilen Code zu erstellen, sollten Sie die Read-Methode verwenden und die gelesenen Zeichen in einem vorher reservierten Puffer speichern.

Ein Beispiel für die Verwendung dieser Klasse finden Sie im Beispielabschnitt. In der folgenden Tabelle sind Beispiele für andere typische oder verwandte E/A-Aufgaben aufgeführt.

Aufgabe

Beispiel in diesem Thema

Eine Textdatei erstellen.

Gewusst wie: Schreiben von Text in eine Datei

Schreiben in eine Textdatei.

Gewusst wie: Schreiben von Text in eine Datei

Lesen aus einer Textdatei.

Gewusst wie: Lesen aus einer Textdatei

Anfügen von Text an eine Datei.

Gewusst wie: Öffnen und Anfügen an eine Protokolldatei

File.AppendText

FileInfo.AppendText

Abrufen der Größe einer Datei.

FileInfo.Length

Abrufen der Attribute einer Datei.

File.GetAttributes

Festlegen der Attribute einer Datei.

File.SetAttributes

Bestimmen, ob eine Datei vorhanden ist.

File.Exists

Lesen aus einer Binärdatei.

Gewusst wie: Lesen und Schreiben einer neu erstellten Datendatei

Schreiben in eine Binärdatei.

Gewusst wie: Lesen und Schreiben einer neu erstellten Datendatei

Beispiel

Im folgenden Codebeispiel wird eine Datei in einem einzigen Vorgang bis zum Ende gelesen.

Imports System
Imports System.IO
Imports System.Text

Public Class Test

    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"

        Try
            If File.Exists(path) Then
                File.Delete(path)
            End If

            Dim sw As StreamWriter = New StreamWriter(path)
            sw.WriteLine("This")
            sw.WriteLine("is some text")
            sw.WriteLine("to test")
            sw.WriteLine("Reading")
            sw.Close()

            Dim sr As StreamReader = New StreamReader(path)

            'This allows you to do one Read operation.
            Console.WriteLine(sr.ReadToEnd())
            sr.Close()
        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class
using System;
using System.IO;

class Test 
{
    
    public static void Main() 
    {
        string path = @"c:\temp\MyTest.txt";

        try 
        {
            if (File.Exists(path)) 
            {
                File.Delete(path);
            }

            using (StreamWriter sw = new StreamWriter(path)) 
            {
                sw.WriteLine("This");
                sw.WriteLine("is some text");
                sw.WriteLine("to test");
                sw.WriteLine("Reading");
            }

            using (StreamReader sr = new StreamReader(path)) 
            {
                //This allows you to do one Read operation.
                Console.WriteLine(sr.ReadToEnd());
            }
        } 
        catch (Exception e) 
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}
using namespace System;
using namespace System::IO;
int main()
{
   String^ path = "c:\\temp\\MyTest.txt";
   try
   {
      if ( File::Exists( path ) )
      {
         File::Delete( path );
      }
      StreamWriter^ sw = gcnew StreamWriter( path );
      try
      {
         sw->WriteLine( "This" );
         sw->WriteLine( "is some text" );
         sw->WriteLine( "to test" );
         sw->WriteLine( "Reading" );
      }
      finally
      {
         delete sw;
      }

      StreamReader^ sr = gcnew StreamReader( path );
      try
      {
         //This allows you to do one Read operation.
         Console::WriteLine( sr->ReadToEnd() );
      }
      finally
      {
         delete sr;
      }
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "The process failed: {0}", e );
   }
}
import System.*;
import System.IO.*;

class Test
{
    public static void main(String[] args)
    {
        String path = "c:\\temp\\MyTest.txt";

        try {
            if (File.Exists(path)) {
                File.Delete(path);
            }
            StreamWriter sw = new StreamWriter(path);
            try {
                sw.WriteLine("This");
                sw.WriteLine("is some text");
                sw.WriteLine("to test");
                sw.WriteLine("Reading");
            }
            finally {
                sw.Dispose();
            }
            StreamReader sr = new StreamReader(path);
            try {
                //This allows you to do one Read operation.
                Console.WriteLine(sr.ReadToEnd());
            }
            finally {
                sr.Dispose();
            }
        }
        catch (System.Exception e) {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    } //main
} //Test

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

StreamReader-Klasse
StreamReader-Member
System.IO-Namespace

Weitere Ressourcen

Datei- und Stream-E/A
Gewusst wie: Lesen aus einer Textdatei
Gewusst wie: Schreiben von Text in eine Datei