StreamReader.Read Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Přečte další znak nebo další sadu znaků ze vstupního datového proudu.
Přetížení
| Name | Description |
|---|---|
| Read() |
Přečte další znak ze vstupního datového proudu a posune pozici znaku o jeden znak. |
| Read(Span<Char>) |
Přečte znaky z aktuálního datového proudu do rozsahu. |
| Read(Char[], Int32, Int32) |
Načte zadaný maximální počet znaků z aktuálního datového proudu do vyrovnávací paměti počínaje zadaným indexem. |
Read()
- Zdroj:
- StreamReader.cs
- Zdroj:
- StreamReader.cs
- Zdroj:
- StreamReader.cs
- Zdroj:
- StreamReader.cs
- Zdroj:
- StreamReader.cs
Přečte další znak ze vstupního datového proudu a posune pozici znaku o jeden znak.
public:
override int Read();
public override int Read();
override this.Read : unit -> int
Public Overrides Function Read () As Integer
Návraty
Další znak ze vstupního datového proudu reprezentovaný jako Int32 objekt nebo -1, pokud nejsou k dispozici žádné další znaky.
Výjimky
Dojde k vstupně-výstupní chybě.
Příklady
Následující příklad kódu ukazuje jednoduché použití Read metody.
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
Následující příklad kódu ukazuje čtení jednoho znaku Read() pomocí přetížení metody, formátování celočíselného výstupu ASCII jako desítkové a šestnáctkové.
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
Poznámky
Tato metoda přepíše TextReader.Read.
Tato metoda vrátí celé číslo, aby bylo možné vrátit -1, pokud byl dosažen konec datového proudu. Pokud pracujete s umístěním podkladového datového proudu po načtení dat do vyrovnávací paměti, umístění podkladového datového proudu nemusí odpovídat pozici interní vyrovnávací paměti. Chcete-li resetovat interní vyrovnávací paměť, zavolejte metodu DiscardBufferedData , ale tato metoda zpomaluje výkon a měla by být volána pouze v případě, že je to naprosto nezbytné.
Seznam běžných vstupně-výstupních úloh najdete v tématu Běžné vstupně-výstupní úlohy.
Viz také
Platí pro
Read(Span<Char>)
- Zdroj:
- StreamReader.cs
- Zdroj:
- StreamReader.cs
- Zdroj:
- StreamReader.cs
- Zdroj:
- StreamReader.cs
- Zdroj:
- StreamReader.cs
Přečte znaky z aktuálního datového proudu do rozsahu.
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
Parametry
Pokud tato metoda vrátí, obsahuje zadané rozpětí znaků nahrazené znaky přečtené z aktuálního zdroje.
Návraty
Počet přečtených znaků nebo 0, pokud se na konci datového proudu nenačetla žádná data. Číslo bude menší nebo rovno buffer délce v závislosti na tom, jestli jsou data dostupná v rámci datového proudu.
Výjimky
Počet znaků přečtených z datového proudu je větší než buffer délka.
buffer je null.
Platí pro
Read(Char[], Int32, Int32)
- Zdroj:
- StreamReader.cs
- Zdroj:
- StreamReader.cs
- Zdroj:
- StreamReader.cs
- Zdroj:
- StreamReader.cs
- Zdroj:
- StreamReader.cs
Načte zadaný maximální počet znaků z aktuálního datového proudu do vyrovnávací paměti počínaje zadaným indexem.
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
Parametry
- buffer
- Char[]
Pokud tato metoda vrátí, obsahuje zadanou znakovou matici s hodnotami mezi index a (index + count - 1) nahrazeny znaky přečtenými z aktuálního zdroje.
- index
- Int32
Index, na buffer kterém chcete začít psát.
- count
- Int32
Maximální počet znaků, které se mají přečíst.
Návraty
Počet přečtených znaků nebo 0, pokud se na konci datového proudu nenačetla žádná data. Číslo bude menší nebo rovno parametru count v závislosti na tom, jestli jsou data dostupná v rámci datového proudu.
Výjimky
Délka vyrovnávací paměti je menší index než count.
buffer je null.
index nebo count je negativní.
Dojde k chybě vstupně-výstupní operace, jako je například zavřený datový proud.
Příklady
Následující příklad kódu načte pět znaků najednou, dokud se nedosáhne konce souboru.
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
Poznámky
Tato metoda přepíše TextReader.Read.
Tato metoda vrátí celé číslo, aby bylo možné vrátit hodnotu 0, pokud bylo dosaženo konce datového proudu.
Při použití Read metody je efektivnější použít vyrovnávací paměť, která je stejná jako vnitřní vyrovnávací paměť datového proudu, kde je interní vyrovnávací paměť nastavena na požadovanou velikost bloku a vždy číst méně než velikost bloku. Pokud při vytváření datového proudu nebyla zadána velikost interní vyrovnávací paměti, její výchozí velikost je 4 kilobajtů (4096 bajtů). Pokud pracujete s umístěním podkladového datového proudu po načtení dat do vyrovnávací paměti, umístění podkladového datového proudu nemusí odpovídat pozici interní vyrovnávací paměti. Chcete-li resetovat interní vyrovnávací paměť, zavolejte metodu DiscardBufferedData , ale tato metoda zpomaluje výkon a měla by být volána pouze v případě, že je to naprosto nezbytné.
Tato metoda se vrátí za počet znaků určených parametrem count , nebo je dosaženo konce souboru.
ReadBlockje blokující verze .Read
Seznam běžných vstupně-výstupních úloh najdete v tématu Běžné vstupně-výstupní úlohy.