StreamReader.ReadToEnd Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Geçerli konumdan akışın sonuna kadar olan tüm karakterleri okur.
public:
override System::String ^ ReadToEnd();
public override string ReadToEnd();
override this.ReadToEnd : unit -> string
Public Overrides Function ReadToEnd () As String
Döndürülenler
Akışın kalan kısmı geçerli konumdan sonuna kadar bir dize olarak. Geçerli konum akışın sonundaysa boş bir dize ("") döndürür.
Özel durumlar
Döndürülen dize için arabellek ayırmak için yeterli bellek yok.
G/Ç hatası oluşur.
Örnekler
Aşağıdaki kod örneği tek bir işlemde dosyanın sonuna kadar okur.
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
Açıklamalar
Bu yöntem geçersiz kılar TextReader.ReadToEnd.
ReadToEnd geçerli konumdan akışın sonuna kadar tüm girişleri okumanız gerektiğinde en iyi sonucu alır. Akıştan kaç karakterin okunduğu üzerinde daha fazla denetim gerekiyorsa yöntem aşırı yüklemesini Read(Char[], Int32, Int32) kullanarak genellikle daha iyi performans elde edin.
ReadToEnd akışın ne zaman sona erdiğini bildiğini varsayar. Sunucunun yalnızca siz istediğinizde veri gönderdiği ve bağlantıyı kapatmadığı etkileşimli protokoller için, ReadToEnd sona ermediği için süresiz olarak engellenebilir ve bundan kaçınılmalıdır.
yöntemini kullanırken, akışın Read iç arabelleğiyle aynı boyutta bir arabellek kullanmanın daha verimli olduğunu unutmayın. Akış oluşturulduğunda arabellek boyutu belirtilmemişse varsayılan boyutu 4 kilobayttır (4096 bayt).
Geçerli yöntem bir OutOfMemoryExceptionoluşturursa, okuyucunun temel nesnedeki Stream konumu yöntemin okuyabildiği karakter sayısıyla gelişmiştir, ancak iç ReadLine arabelleğe zaten okunan karakterler atılır. Verileri arabelleğe okuduktan sonra temel alınan akışın konumunu değiştirirseniz, temel alınan akışın konumu iç arabelleğin konumuyla eşleşmeyebilir. İç arabelleği sıfırlamak için yöntemini çağırın DiscardBufferedData ; ancak bu yöntem performansı yavaşlatıyor ve yalnızca kesinlikle gerekli olduğunda çağrılmalıdır.
Yaygın G/Ç görevlerinin listesi için bkz. Ortak G/Ç Görevleri.