StreamReader.Read Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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
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
.
buffer
adalah 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
.
buffer
adalah 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.