StreamReader.Read Yöntem

Tanım

Giriş akışından sonraki karakteri veya sonraki karakter kümesini okur.

Aşırı Yüklemeler

Read()

Giriş akışından sonraki karakteri okur ve karakter konumunu bir karakter ilerletir.

Read(Span<Char>)

Geçerli akıştan karakterleri bir yayılma alanına okur.

Read(Char[], Int32, Int32)

Belirtilen dizinden başlayarak geçerli akıştan bir arabelleğe belirtilen karakter sayısı üst sınırını okur.

Read()

Kaynak:
StreamReader.cs
Kaynak:
StreamReader.cs
Kaynak:
StreamReader.cs

Giriş akışından sonraki karakteri okur ve karakter konumunu bir karakter ilerletir.

public:
 override int Read();
public override int Read ();
override this.Read : unit -> int
Public Overrides Function Read () As Integer

Döndürülenler

Bir nesne olarak temsil edilen giriş akışından sonraki Int32 karakter veya başka karakter yoksa -1.

Özel durumlar

Bir G/Ç hatası oluşur.

Örnekler

Aşağıdaki kod örneği, yönteminin Read basit bir kullanımını gösterir.

using namespace System;
using namespace System::IO;
int main()
{
   String^ path = "c:\\temp\\MyTest.txt";
   try
   {
      if ( File::Exists( path ) )
      {
         File::Delete( path );
      }
      StreamWriter^ sw = gcnew StreamWriter( path );
      try
      {
         sw->WriteLine( "This" );
         sw->WriteLine( "is some text" );
         sw->WriteLine( "to test" );
         sw->WriteLine( "Reading" );
      }
      finally
      {
         delete sw;
      }

      StreamReader^ sr = gcnew StreamReader( path );
      try
      {
         while ( sr->Peek() >= 0 )
         {
            Console::Write( (Char)sr->Read() );
         }
      }
      finally
      {
         delete sr;
      }
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "The process failed: {0}", e );
   }
}
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.Write((char)sr.Read());
                }
            }
        }
        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.Write(Convert.ToChar(sr.Read()))
            Loop
            sr.Close()
        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

Aşağıdaki kod örneği, yöntem aşırı yüklemesini Read() kullanarak tek bir karakteri okumayı ve ASCII tamsayı çıkışını ondalık ve onaltılık olarak biçimlendirmeyi gösterir.

using namespace System;
using namespace System::IO;
int main()
{
   
   //Create a FileInfo instance representing an existing text file.
   FileInfo^ MyFile = gcnew FileInfo( "c:\\csc.txt" );
   
   //Instantiate a StreamReader to read from the text file.
   StreamReader^ sr = MyFile->OpenText();
   
   //Read a single character.
   int FirstChar = sr->Read();
   
   //Display the ASCII number of the character read in both decimal and hexadecimal format.
   Console::WriteLine( "The ASCII number of the first character read is {0:D} in decimal and {1:X} in hexadecimal.", FirstChar, FirstChar );
   
   //
   sr->Close();
}
using System;
using System.IO;

class StrmRdrRead
{
public static void Main()
    {
    //Create a FileInfo instance representing an existing text file.
    FileInfo MyFile=new FileInfo(@"c:\csc.txt");
    //Instantiate a StreamReader to read from the text file.
    StreamReader sr=MyFile.OpenText();
    //Read a single character.
    int FirstChar=sr.Read();
    //Display the ASCII number of the character read in both decimal and hexadecimal format.
    Console.WriteLine("The ASCII number of the first character read is {0:D} in decimal and {1:X} in hexadecimal.",
        FirstChar, FirstChar);
    //
    sr.Close();
    }
}
Imports System.IO

Class StrmRdrRead
   
   Public Shared Sub Main()
      'Create a FileInfo instance representing an existing text file.
      Dim MyFile As New FileInfo("c:\csc.txt")
      'Instantiate a StreamReader to read from the text file.
      Dim sr As StreamReader = MyFile.OpenText()
      'Read a single character.
      Dim FirstChar As Integer = sr.Read()
      'Display the ASCII number of the character read in both decimal and hexadecimal format.
      Console.WriteLine("The ASCII number of the first character read is {0:D} in decimal and {1:X} in hexadecimal.", FirstChar, FirstChar)
      sr.Close()
   End Sub
End Class

Açıklamalar

Bu yöntem geçersiz kılar TextReader.Read.

Bu yöntem, akışın sonuna ulaşıldıysa -1 döndürebilmesi için bir tamsayı döndürür. Verileri arabelleğe okuduktan sonra temel alınan akışın konumunu işlerseniz, 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.

Ayrıca bkz.

Şunlara uygulanır

Read(Span<Char>)

Kaynak:
StreamReader.cs
Kaynak:
StreamReader.cs
Kaynak:
StreamReader.cs

Geçerli akıştan karakterleri bir yayılma alanına okur.

public:
 override int Read(Span<char> buffer);
public override int Read (Span<char> buffer);
override this.Read : Span<char> -> int
Public Overrides Function Read (buffer As Span(Of Char)) As Integer

Parametreler

buffer
Span<Char>

Bu yöntem döndürdüğünde, geçerli kaynaktan okunan karakterlerle değiştirilen belirtilen karakter aralığını içerir.

Döndürülenler

Okunan karakter sayısı veya akışın sonunda veri okunmadıysa 0. Verilerin akış içinde kullanılabilir olup olmadığına bağlı olarak, sayı uzunluk değerinden küçük veya buna eşit buffer olacaktır.

Özel durumlar

Akıştan okunan karakter sayısı, uzunluk değerinden buffer daha büyük.

buffer, null değeridir.

Şunlara uygulanır

Read(Char[], Int32, Int32)

Kaynak:
StreamReader.cs
Kaynak:
StreamReader.cs
Kaynak:
StreamReader.cs

Belirtilen dizinden başlayarak geçerli akıştan bir arabelleğe belirtilen karakter sayısı üst sınırını okur.

public:
 override int Read(cli::array <char> ^ buffer, int index, int count);
public override int Read (char[] buffer, int index, int count);
override this.Read : char[] * int * int -> int
Public Overrides Function Read (buffer As Char(), index As Integer, count As Integer) As Integer

Parametreler

buffer
Char[]

Bu yöntem döndürdüğünde, ve (index + count - 1) arasındaki index değerlerin geçerli kaynaktan okunan karakterlerle değiştirdiği belirtilen karakter dizisini içerir.

index
Int32

Yazmaya başlayabileceğiniz dizini buffer .

count
Int32

Okunacak en fazla karakter sayısı.

Döndürülenler

Okunan karakter sayısı veya akışın sonunda veri okunmadıysa 0. Verilerin akış içinde kullanılabilir olup olmadığına bağlı olarak sayı parametresinden count küçük veya buna eşit olacaktır.

Özel durumlar

Arabellek uzunluğu eksi index değeri değerinden countküçüktür.

buffer, null değeridir.

index veya count negatiftir.

Akış kapatılır gibi bir G/Ç hatası oluşur.

Örnekler

Aşağıdaki kod örneği, dosyanın sonuna ulaşılana kadar bir kerede beş karakter okur.

using namespace System;
using namespace System::IO;

int main()
{
   String^ path = "c:\\temp\\MyTest.txt";
   try
   {
      if ( File::Exists( path ) )
      {
         File::Delete( path );
      }
      StreamWriter^ sw = gcnew StreamWriter( path );
      try
      {
         sw->WriteLine( "This" );
         sw->WriteLine( "is some text" );
         sw->WriteLine( "to test" );
         sw->WriteLine( "Reading" );
      }
      finally
      {
         delete sw;
      }

      StreamReader^ sr = gcnew StreamReader( path );
      try
      {
         //This is an arbitrary size for this example.
         array<Char>^c = nullptr;
         while ( sr->Peek() >= 0 )
         {
            c = gcnew array<Char>(5);
            sr->Read( c, 0, c->Length );
            
            //The output will look odd, because
            //only five characters are read at a time.
            Console::WriteLine( c );
         }
      }
      finally
      {
         delete sr;
      }
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "The process failed: {0}", e );
   }
}
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 is an arbitrary size for this example.
                char[] c = null;

                while (sr.Peek() >= 0)
                {
                    c = new char[5];
                    sr.Read(c, 0, c.Length);
                    //The output will look odd, because
                    //only five characters are read at a time.
                    Console.WriteLine(c);
                }
            }
        }
        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
                'This is an arbitrary size for this example.
                Dim c(5) As Char
                sr.Read(c, 0, c.Length)
                'The output will look odd, because
                'only five characters are read at a time.
                Console.WriteLine(c)
            Loop
            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.Read.

Bu yöntem, akışın sonuna ulaşıldıysa 0 döndürebilmesi için bir tamsayı döndürür.

yöntemi kullanılırken Read , iç arabelleğin istediğiniz blok boyutuna ayarlandığı akışın iç arabelleğiyle aynı boyutta bir arabellek kullanmak ve her zaman blok boyutundan daha az okumak daha verimlidir. Akış oluşturulduğunda iç arabelleğin boyutu belirtilmemişse, varsayılan boyutu 4 kilobayttır (4096 bayt). Verileri arabelleğe okuduktan sonra temel alınan akışın konumunu işlerseniz, 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.

Bu yöntem, parametresi tarafından count belirtilen karakter sayısı okunduktan veya dosyanın sonuna ulaşıldıktan sonra döndürür. ReadBlock , öğesinin engelleyici bir sürümüdür Read.

Yaygın G/Ç görevlerinin listesi için bkz. Ortak G/Ç Görevleri.

Ayrıca bkz.

Şunlara uygulanır