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

String

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 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 alle Eingaben von der aktuellen Position bis zum Ende des Streams 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, bei denen der Server Daten nur sendet, wenn Sie sie anfordern und die Verbindung nicht schließt, ReadToEnd kann unbegrenzt blockiert werden, 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 Streams hat. Wenn die Größe des Puffers beim Aufbau des Streams nicht angegeben wurde, beträgt die Standardgröße 4 Kilobyte (4096 Bytes).

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

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

Gilt für

Siehe auch