Bagikan melalui


StreamReader.Read Metode

Definisi

Membaca karakter berikutnya atau sekumpulan karakter berikutnya dari aliran input.

Overload

Read()

Membaca karakter berikutnya dari aliran input dan memajukan posisi karakter dengan satu karakter.

Read(Span<Char>)

Membaca karakter dari aliran saat ini ke dalam rentang.

Read(Char[], Int32, Int32)

Membaca maksimum karakter yang ditentukan dari aliran saat ini ke dalam buffer, dimulai pada indeks yang ditentukan.

Read()

Sumber:
StreamReader.cs
Sumber:
StreamReader.cs
Sumber:
StreamReader.cs

Membaca karakter berikutnya dari aliran input dan memajukan posisi karakter dengan satu karakter.

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

Mengembalikan

Karakter berikutnya dari aliran input yang direpresentasikan sebagai Int32 objek, atau -1 jika tidak ada lagi karakter yang tersedia.

Pengecualian

Terjadi kesalahan I/O.

Contoh

Contoh kode berikut menunjukkan penggunaan sederhana metode ini Read .

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

Contoh kode berikut menunjukkan membaca satu karakter menggunakan Read() metode kelebihan beban, memformat output bilangan bulat ASCII sebagai desimal dan heksadesimal.

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

Keterangan

Metode ini mengambil TextReader.Readalih .

Metode ini mengembalikan bilangan bulat sehingga dapat mengembalikan -1 jika akhir aliran telah tercapai. Jika Anda memanipulasi posisi aliran yang mendasar setelah membaca data ke dalam buffer, posisi aliran yang mendasar mungkin tidak cocok dengan posisi buffer internal. Untuk mengatur ulang buffer internal, panggil DiscardBufferedData metode ; namun, metode ini memperlambat performa dan harus dipanggil hanya jika benar-benar diperlukan.

Untuk daftar tugas I/O umum, lihat Tugas I/O Umum.

Lihat juga

Berlaku untuk

Read(Span<Char>)

Sumber:
StreamReader.cs
Sumber:
StreamReader.cs
Sumber:
StreamReader.cs

Membaca karakter dari aliran saat ini ke dalam rentang.

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

Parameter

buffer
Span<Char>

Ketika metode ini kembali, berisi rentang karakter yang ditentukan yang digantikan oleh karakter yang dibaca dari sumber saat ini.

Mengembalikan

Jumlah karakter yang telah dibaca, atau 0 jika di akhir aliran dan tidak ada data yang dibaca. Jumlahnya akan kurang dari atau sama dengan panjangnya buffer , tergantung pada apakah data tersedia dalam aliran.

Pengecualian

Jumlah karakter yang dibaca dari aliran lebih besar dari panjangnya buffer .

bufferadalah null.

Berlaku untuk

Read(Char[], Int32, Int32)

Sumber:
StreamReader.cs
Sumber:
StreamReader.cs
Sumber:
StreamReader.cs

Membaca maksimum karakter yang ditentukan dari aliran saat ini ke dalam buffer, dimulai pada indeks yang ditentukan.

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

Parameter

buffer
Char[]

Ketika metode ini kembali, berisi array karakter yang ditentukan dengan nilai antara index dan (index + count - 1) digantikan oleh karakter yang dibaca dari sumber saat ini.

index
Int32

Indeks buffer untuk mulai menulis.

count
Int32

Jumlah maksimum karakter yang akan dibaca.

Mengembalikan

Jumlah karakter yang telah dibaca, atau 0 jika di akhir aliran dan tidak ada data yang dibaca. Angka akan kurang dari atau sama dengan count parameter , tergantung pada apakah data tersedia dalam aliran.

Pengecualian

Panjang buffer minus index kurang dari count.

bufferadalah null.

index atau count negatif.

Terjadi kesalahan I/O, seperti aliran ditutup.

Contoh

Contoh kode berikut membaca lima karakter dalam satu waktu hingga akhir file tercapai.

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

Keterangan

Metode ini mengambil TextReader.Readalih .

Metode ini mengembalikan bilangan bulat sehingga dapat mengembalikan 0 jika akhir aliran telah tercapai.

Saat menggunakan Read metode , lebih efisien untuk menggunakan buffer yang berukuran sama dengan buffer internal aliran, di mana buffer internal diatur ke ukuran blok yang Anda inginkan, dan untuk selalu membaca kurang dari ukuran blok. Jika ukuran buffer internal tidak ditentukan saat aliran dibangun, ukuran defaultnya adalah 4 kilobyte (4096 byte). Jika Anda memanipulasi posisi aliran yang mendasar setelah membaca data ke dalam buffer, posisi aliran yang mendasar mungkin tidak cocok dengan posisi buffer internal. Untuk mengatur ulang buffer internal, panggil DiscardBufferedData metode ; namun, metode ini memperlambat performa dan harus dipanggil hanya jika benar-benar diperlukan.

Metode ini kembali setelah jumlah karakter yang ditentukan oleh count parameter dibaca, atau akhir file tercapai. ReadBlock adalah versi pemblokiran dari Read.

Untuk daftar tugas I/O umum, lihat Tugas I/O Umum.

Lihat juga

Berlaku untuk