StreamReader.ReadToEnd Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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.