Freigeben über


StreamReader.ReadLine Methode

Definition

Liest eine Zeile von Zeichen aus dem aktuellen Stream und gibt die Daten als Zeichenfolge zurück.

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

Gibt zurück

Die nächste Zeile des Eingabestreams bzw. null, wenn das Ende des Eingabestreams erreicht ist.

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 werden Zeilen aus einer Datei gelesen, bis das Ende der Datei erreicht ist.

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
      {
         while ( sr->Peek() >= 0 )
         {
            Console::WriteLine( sr->ReadLine() );
         }
      }
      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))
            {
                while (sr.Peek() >= 0)
                {
                    Console.WriteLine(sr.ReadLine());
                }
            }
        }
        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)

            Do While sr.Peek() >= 0
                Console.WriteLine(sr.ReadLine())
            Loop
            sr.Close()
        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

Hinweise

Eine Zeile wird als Folge von Zeichen definiert, gefolgt von einem Zeilenvorschub ("\n"), einem Wagenrücklauf ("\r") oder einem Wagenrücklauf unmittelbar gefolgt von einem Zeilenvorschub ("\r\n"). Die zurückgegebene Zeichenfolge enthält nicht den beendenden Wagenrücklauf oder Zeilenvorschub. Der zurückgegebene Wert ist null , wenn das Ende des Eingabedatenstroms erreicht ist.

Diese Methode überschreibt TextReader.ReadLine.

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 bereits in den internen ReadLine Puffer gelesenen Zeichen werden verworfen. Wenn Sie die Position des zugrunde liegenden Datenstroms nach dem Lesen von Daten in den Puffer bearbeiten, 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 absolut erforderlich ist.

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

Gilt für:

Weitere Informationen