Teilen über


StreamReader.ReadToEnd Methode

Definition

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

public:
 override System::String ^ ReadToEnd();
public override string ReadToEnd ();
override this.ReadToEnd : unit -> string
Public Overrides Function ReadToEnd () As String

Gibt zurück

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

Es ist nicht genügend Speicher vorhanden, um einen Puffer für die zurückgegebene Zeichenfolge zuzuordnen.

Ein E/A-Fehler tritt auf.

Beispiele

Im folgenden Codebeispiel wird der gesamte Weg bis zum Ende einer Datei in einem Vorgang gelesen.

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 );
   }
}
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());
        }
    }
}
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

Hinweise

Diese Methode überschreibt TextReader.ReadToEnd.

ReadToEnd funktioniert am besten, wenn Sie die gesamte Eingabe von der aktuellen Position bis zum Ende des Datenstroms lesen müssen. Wenn mehr Kontrolle darüber erforderlich ist, wie viele Zeichen aus dem Stream gelesen werden, verwenden Sie die Read(Char[], Int32, Int32) Methodenüberladung, was in der Regel zu einer besseren Leistung führt.

ReadToEnd geht davon aus, dass der Stream weiß, wann er ein Ende erreicht hat. Bei interaktiven Protokollen, in denen der Server Daten nur sendet, wenn Sie sie anfordern und die Verbindung nicht schließt, kann dies auf unbestimmte Zeit blockiert werden, ReadToEnd da sie kein Ende erreicht und vermieden werden sollte.

Beachten Sie, dass es bei Verwendung der Read -Methode effizienter ist, einen Puffer zu verwenden, der die gleiche Größe wie der interne Puffer des Datenstroms aufweist. Wenn die Größe des Puffers beim Erstellen des Datenstroms nicht angegeben wurde, beträgt die Standardgröße 4 KB (4096 Bytes).

Wenn die aktuelle Methode einen OutOfMemoryExceptionauslöst, wird die Position des Lesers im zugrunde liegenden Stream Objekt um die Anzahl der Zeichen erweitert, die die Methode lesen konnte, aber die Zeichen, die bereits in den internen ReadLine Puffer gelesen wurden, werden verworfen. Wenn Sie die Position des zugrunde liegenden Datenstroms nach dem Lesen von Daten in den Puffer ändern, stimmt die Position des zugrunde liegenden Datenstroms möglicherweise nicht mit der Position des internen Puffers überein. Um den internen Puffer zurückzusetzen, rufen Sie die -Methode auf. Diese Methode verlangsamt jedoch die DiscardBufferedData Leistung und sollte nur aufgerufen werden, wenn dies unbedingt erforderlich ist.

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

Gilt für:

Weitere Informationen