StreamReader.Read Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Lit le caractère suivant ou le jeu de caractères suivant à partir du flux d’entrée.
Surcharges
| Nom | Description |
|---|---|
| Read() |
Lit le caractère suivant du flux d’entrée et avance la position du caractère d’un caractère. |
| Read(Span<Char>) |
Lit les caractères du flux actuel dans une étendue. |
| Read(Char[], Int32, Int32) |
Lit un maximum spécifié de caractères du flux actuel dans une mémoire tampon, en commençant à l’index spécifié. |
Read()
Lit le caractère suivant du flux d’entrée et avance la position du caractère d’un caractère.
public:
override int Read();
public override int Read();
override this.Read : unit -> int
Public Overrides Function Read () As Integer
Retours
Caractère suivant du flux d’entrée représenté en tant qu’objet Int32 ou -1 si aucun plus de caractères n’est disponible.
Exceptions
Une erreur d’E/S se produit.
Exemples
L’exemple de code suivant illustre une utilisation simple de la Read méthode.
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
L’exemple de code suivant illustre la lecture d’un caractère unique à l’aide de la Read() surcharge de méthode, en mettant en forme la sortie entière ASCII comme décimale et hexadécimale.
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
Remarques
Cette méthode se substitue à TextReader.Read.
Cette méthode retourne un entier afin qu’il puisse retourner -1 si la fin du flux a été atteinte. Si vous manipulez la position du flux sous-jacent après avoir lu des données dans la mémoire tampon, la position du flux sous-jacent peut ne pas correspondre à la position de la mémoire tampon interne. Pour réinitialiser la mémoire tampon interne, appelez la DiscardBufferedData méthode . Toutefois, cette méthode ralentit les performances et doit être appelée uniquement si nécessaire.
Pour obtenir la liste des tâches d’E/S courantes, consultez Tâches d’E/S courantes.
Voir aussi
- E/S de fichier et de flux
- Guide pratique pour lire du texte à partir d’un fichier
- Guide pratique pour écrire du texte dans un fichier
S’applique à
Read(Span<Char>)
Lit les caractères du flux actuel dans une étendue.
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
Paramètres
Lorsque cette méthode est retournée, contient l’étendue spécifiée de caractères remplacée par les caractères lus à partir de la source actuelle.
Retours
Nombre de caractères lus ou 0 si à la fin du flux et qu’aucune donnée n’a été lue. Le nombre est inférieur ou égal à la buffer longueur, selon que les données sont disponibles dans le flux.
Exceptions
Le nombre de caractères lus à partir du flux est supérieur à la buffer longueur.
buffer a la valeur null.
S’applique à
Read(Char[], Int32, Int32)
Lit un maximum spécifié de caractères du flux actuel dans une mémoire tampon, en commençant à l’index spécifié.
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
Paramètres
- buffer
- Char[]
Lorsque cette méthode est retournée, contient le tableau de caractères spécifié avec les valeurs entre index et (index + count - 1) remplacées par les caractères lus à partir de la source actuelle.
- index
- Int32
Index auquel buffer commencer l’écriture.
- count
- Int32
Nombre maximal de caractères à lire.
Retours
Nombre de caractères lus ou 0 si à la fin du flux et qu’aucune donnée n’a été lue. Le nombre est inférieur ou égal au count paramètre, selon que les données sont disponibles dans le flux.
Exceptions
La longueur de la mémoire tampon moins index est inférieure à count.
buffer a la valeur null.
index ou count est négatif.
Une erreur d’E/S se produit, telle que le flux est fermé.
Exemples
L’exemple de code suivant lit cinq caractères à la fois jusqu’à ce que la fin du fichier soit atteinte.
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
Remarques
Cette méthode se substitue à TextReader.Read.
Cette méthode retourne un entier afin qu’il puisse retourner 0 si la fin du flux a été atteinte.
Lorsque vous utilisez la Read méthode, il est plus efficace d’utiliser une mémoire tampon qui est de la même taille que la mémoire tampon interne du flux, où la mémoire tampon interne est définie sur la taille de bloc souhaitée et pour toujours lire moins que la taille du bloc. Si la taille de la mémoire tampon interne n’a pas été spécifiée lorsque le flux a été construit, sa taille par défaut est de 4 kilo-octets (4 096 octets). Si vous manipulez la position du flux sous-jacent après avoir lu des données dans la mémoire tampon, la position du flux sous-jacent peut ne pas correspondre à la position de la mémoire tampon interne. Pour réinitialiser la mémoire tampon interne, appelez la DiscardBufferedData méthode . Toutefois, cette méthode ralentit les performances et doit être appelée uniquement si nécessaire.
Cette méthode retourne une fois que le nombre de caractères spécifié par le count paramètre est lu ou que la fin du fichier est atteinte.
ReadBlock est une version bloquante de Read.
Pour obtenir la liste des tâches d’E/S courantes, consultez Tâches d’E/S courantes.
Voir aussi
- E/S de fichier et de flux
- Guide pratique pour lire du texte à partir d’un fichier
- Guide pratique pour écrire du texte dans un fichier