StreamReader.ReadToEnd Methode

Definitie

Hiermee worden alle tekens van de huidige positie tot het einde van de stream gelezen.

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

Retouren

De rest van de stroom als een tekenreeks, van de huidige positie tot het einde. Als de huidige positie zich aan het einde van de stroom bevindt, retourneert u een lege tekenreeks ("").

Uitzonderingen

Er is onvoldoende geheugen om een buffer toe te wijzen voor de geretourneerde tekenreeks.

Er treedt een I/O-fout op.

Voorbeelden

In het volgende codevoorbeeld wordt in één bewerking helemaal naar het einde van een bestand gelezen.

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

Opmerkingen

Deze methode overschrijft TextReader.ReadToEnd.

ReadToEnd werkt het beste wanneer u alle invoer van de huidige positie tot het einde van de stroom moet lezen. Als er meer controle nodig is over het aantal tekens dat uit de stream wordt gelezen, gebruikt u de overbelasting van de Read(Char[], Int32, Int32) methode, wat over het algemeen resulteert in betere prestaties.

ReadToEnd gaat ervan uit dat de stream weet wanneer deze een einde heeft bereikt. Voor interactieve protocollen waarin de server alleen gegevens verzendt wanneer u hier om vraagt en de verbinding niet sluit, ReadToEnd kan dit voor onbepaalde tijd blokkeren omdat deze geen einde bereikt en moet worden vermeden.

Houd er rekening mee dat wanneer u de Read methode gebruikt, het efficiënter is om een buffer te gebruiken die dezelfde grootte heeft als de interne buffer van de stream. Als de grootte van de buffer niet is opgegeven toen de stroom werd gemaakt, is de standaardgrootte 4 kilobytes (4096 bytes).

Als de huidige methode een OutOfMemoryExceptionwaarde genereert, wordt de positie van de lezer in het onderliggende Stream object gevorderd door het aantal tekens dat de methode kon lezen, maar de tekens die al in de interne ReadLine buffer zijn gelezen, worden verwijderd. Als u de positie van de onderliggende stroom bewerkt nadat u gegevens in de buffer hebt gelezen, komt de positie van de onderliggende stroom mogelijk niet overeen met de positie van de interne buffer. Als u de interne buffer opnieuw wilt instellen, roept u de DiscardBufferedData methode aan. Deze methode vertraagt echter de prestaties en moet alleen worden aangeroepen wanneer dit absoluut noodzakelijk is.

Zie Algemene I/O-taken voor een lijst met algemene I/O-taken.

Van toepassing op

Zie ook