StreamReader.ReadLine Metod

Definition

Läser en rad med tecken från den aktuella strömmen och returnerar data som en sträng.

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

Returer

Nästa rad från indataströmmen, eller null om slutet av indataströmmen har nåtts.

Undantag

Det finns inte tillräckligt med minne för att allokera en buffert för den returnerade strängen.

Ett I/O-fel inträffar.

Exempel

I följande kodexempel läss rader från en fil tills slutet av filen har nåtts.

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

Kommentarer

En rad definieras som en sekvens med tecken följt av en radmatning ("\n"), en vagnretur ("\r"), eller en vagnretur omedelbart följt av en radmatning ("\r\n"). Strängen som returneras innehåller inte den avslutande vagnreturen eller radmatningen. Det returnerade värdet är null om slutet på indataströmmen nås.

Om strömmen slutar med en ny radsekvens returneras ingen ytterligare tom rad. Till exempel genererar en ström som innehåller "line1\nline2\n" samma två rader ("line1" och "line2") som en ström som innehåller "line1\nline2".

Den här metoden åsidosätter TextReader.ReadLine.

Om den aktuella metoden genererar en OutOfMemoryExceptionavanceras läsarens position i det underliggande Stream objektet av antalet tecken som metoden kunde läsa, men tecknen som redan lästs in i den interna ReadLine bufferten ignoreras. Om du ändrar positionen för den underliggande strömmen efter att ha läst in data i bufferten kanske den underliggande strömmens position inte matchar den interna buffertens position. Om du vill återställa den interna bufferten DiscardBufferedData anropar du metoden, men den här metoden försämrar prestandan och bör bara anropas när det är absolut nödvändigt.

En lista över vanliga I/O-uppgifter finns i Vanliga I/O-uppgifter.

Gäller för

Se även