StreamReader.Read 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.
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
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 count
küçü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.