StreamReader.Read Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Liest das nächste Zeichen oder den nächsten Satz von Zeichen aus dem Eingabedatenstrom.
Überlädt
| Name | Beschreibung |
|---|---|
| Read() |
Liest das nächste Zeichen aus dem Eingabedatenstrom und wechselt die Zeichenposition um ein Zeichen. |
| Read(Span<Char>) |
Liest die Zeichen aus dem aktuellen Datenstrom in eine Spanne. |
| Read(Char[], Int32, Int32) |
Liest ein angegebenes Maximum von Zeichen aus dem aktuellen Datenstrom in einen Puffer, beginnend am angegebenen Index. |
Read()
- Quelle:
- StreamReader.cs
- Quelle:
- StreamReader.cs
- Quelle:
- StreamReader.cs
- Quelle:
- StreamReader.cs
- Quelle:
- StreamReader.cs
Liest das nächste Zeichen aus dem Eingabedatenstrom und wechselt die Zeichenposition um ein Zeichen.
public:
override int Read();
public override int Read();
override this.Read : unit -> int
Public Overrides Function Read () As Integer
Gibt zurück
Das nächste Zeichen aus dem Eingabedatenstrom, der als Int32 Objekt dargestellt wird, oder -1, wenn keine weiteren Zeichen verfügbar sind.
Ausnahmen
Ein E/A-Fehler tritt auf.
Beispiele
Im folgenden Codebeispiel wird eine einfache Verwendung der Read Methode veranschaulicht.
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
Im folgenden Codebeispiel wird das Lesen eines einzelnen Zeichens mithilfe der Read() Methodenüberladung veranschaulicht, wobei die ASCII-Ganzzahlausgabe als Dezimal- und Hexadezimalzahl formatiert wird.
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
Hinweise
Diese Methode überschreibt TextReader.Read.
Diese Methode gibt eine ganze Zahl zurück, damit sie -1 zurückgeben kann, wenn das Ende des Datenstroms erreicht wurde. Wenn Sie die Position des zugrunde liegenden Datenstroms nach dem Lesen von Daten in den Puffer ändern, entspricht die Position des zugrunde liegenden Datenstroms möglicherweise nicht der Position des internen Puffers. Um den internen Puffer zurückzusetzen, rufen Sie die Methode auf. Diese Methode verlangsamt jedoch die DiscardBufferedData Leistung und sollte nur aufgerufen werden, wenn sie unbedingt erforderlich ist.
Eine Liste allgemeiner E/A-Aufgaben finden Sie unter "Allgemeine E/A-Aufgaben".
Weitere Informationen
- Datei- und Stream-E/A
- Vorgehensweise: Lesen von Text aus einer Datei
- Vorgehensweise: Schreiben von Text in eine Datei
Gilt für:
Read(Span<Char>)
- Quelle:
- StreamReader.cs
- Quelle:
- StreamReader.cs
- Quelle:
- StreamReader.cs
- Quelle:
- StreamReader.cs
- Quelle:
- StreamReader.cs
Liest die Zeichen aus dem aktuellen Datenstrom in eine Spanne.
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
Wenn diese Methode zurückgegeben wird, enthält sie die angegebene Zeichenspanne, die durch die aus der aktuellen Quelle gelesenen Zeichen ersetzt wird.
Gibt zurück
Die Anzahl der Zeichen, die gelesen wurden, oder 0, wenn am Ende des Datenstroms und keine Daten gelesen wurden. Die Zahl ist kleiner oder gleich der buffer Länge, je nachdem, ob die Daten im Datenstrom verfügbar sind.
Ausnahmen
Die Anzahl der aus dem Datenstrom gelesenen Zeichen ist größer als die buffer Länge.
buffer ist null.
Gilt für:
Read(Char[], Int32, Int32)
- Quelle:
- StreamReader.cs
- Quelle:
- StreamReader.cs
- Quelle:
- StreamReader.cs
- Quelle:
- StreamReader.cs
- Quelle:
- StreamReader.cs
Liest ein angegebenes Maximum von Zeichen aus dem aktuellen Datenstrom in einen Puffer, beginnend am angegebenen Index.
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[]
Wenn diese Methode zurückgegeben wird, enthält sie das angegebene Zeichenarray, wobei die Werte zwischen index und (index + count - 1) durch die aus der aktuellen Quelle gelesenen Zeichen ersetzt werden.
- index
- Int32
Der Index buffer , an dem mit dem Schreiben begonnen werden soll.
- count
- Int32
Die maximale Anzahl zu lesenden Zeichen.
Gibt zurück
Die Anzahl der Zeichen, die gelesen wurden, oder 0, wenn am Ende des Datenstroms und keine Daten gelesen wurden. Die Zahl ist kleiner oder gleich dem count Parameter, je nachdem, ob die Daten im Datenstrom verfügbar sind.
Ausnahmen
Die Pufferlänge minus index ist kleiner als count.
buffer ist null.
index oder count ist negativ.
Ein E/A-Fehler tritt auf, z. B. der Datenstrom wird geschlossen.
Beispiele
Im folgenden Codebeispiel werden fünf Zeichen gleichzeitig gelesen, bis das Ende der Datei erreicht ist.
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.ReadBlock(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.ReadBlock(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
Hinweise
Diese Methode überschreibt TextReader.Read.
Diese Methode gibt eine ganze Zahl zurück, damit 0 zurückgegeben werden kann, wenn das Ende des Datenstroms erreicht wurde.
Bei Verwendung der Read Methode ist es effizienter, einen Puffer zu verwenden, der die gleiche Größe wie der interne Puffer des Datenstroms aufweist, wobei der interne Puffer auf die gewünschte Blockgröße festgelegt ist und immer kleiner als die Blockgröße ist. Wenn die Größe des internen Puffers beim Erstellen des Datenstroms nicht angegeben wurde, beträgt die Standardgröße 4 KB (4096 Byte). Wenn Sie die Position des zugrunde liegenden Datenstroms nach dem Lesen von Daten in den Puffer ändern, entspricht die Position des zugrunde liegenden Datenstroms möglicherweise nicht der Position des internen Puffers. Um den internen Puffer zurückzusetzen, rufen Sie die Methode auf. Diese Methode verlangsamt jedoch die DiscardBufferedData Leistung und sollte nur aufgerufen werden, wenn sie unbedingt erforderlich ist.
Diese Methode gibt zurück, nachdem die Anzahl der vom Parameter angegebenen count Zeichen gelesen wurde oder das Ende der Datei erreicht ist.
ReadBlock ist eine blockierende Version von Read.
Eine Liste allgemeiner E/A-Aufgaben finden Sie unter "Allgemeine E/A-Aufgaben".
Weitere Informationen
- Datei- und Stream-E/A
- Vorgehensweise: Lesen von Text aus einer Datei
- Vorgehensweise: Schreiben von Text in eine Datei