StreamReader.ReadToEnd Yöntem

Tanım

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.

Şunlara uygulanır

Ayrıca bkz.