StreamReader.Read Méthode

Définition

Lit le caractère ou l'ensemble de caractères suivant dans le flux d'entrée.Reads the next character or next set of characters from the input stream.

Surcharges

Read()

Lit le caractère suivant dans le flux d'entrée et avance la position d'un caractère.Reads the next character from the input stream and advances the character position by one character.

Read(Span<Char>)

Lit les caractères du flux actuel dans une étendue.Reads the characters from the current stream into a span.

Read(Char[], Int32, Int32)

Lit un nombre maximal de caractères spécifié du flux actuel dans une mémoire tampon, en commençant à l'index spécifié.Reads a specified maximum of characters from the current stream into a buffer, beginning at the specified index.

Read()

Lit le caractère suivant dans le flux d'entrée et avance la position d'un caractère.Reads the next character from the input stream and advances the character position by one character.

public:
 override int Read();
public override int Read ();
override this.Read : unit -> int
Public Overrides Function Read () As Integer

Retours

Int32

Caractère suivant du flux d'entrée, représenté sous la forme d'un objet Int32, ou -1 s'il n'y a plus de caractère disponible.The next character from the input stream represented as an Int32 object, or -1 if no more characters are available.

Exceptions

Une erreur d’E/S se produit.An I/O error occurs.

Exemples

L’exemple de code suivant illustre une utilisation simple de la Read méthode.The following code example demonstrates a simple use of the Read method.

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

L’exemple de code suivant montre la lecture d’un caractère unique à l’aide de la Read() surcharge de méthode, en mettant en forme la sortie d’entier ASCII sous forme de valeur décimale et hexadécimale.The following code example demonstrates reading a single character using the Read() method overload, formatting the ASCII integer output as decimal and hexadecimal.

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

Remarques

Cette méthode se substitue à TextReader.Read.This method overrides TextReader.Read.

Cette méthode retourne un entier afin qu’il puisse retourner-1 si la fin du flux a été atteinte.This method returns an integer so that it can return -1 if the end of the stream has been reached. Si vous manipulez la position du flux sous-jacent après avoir lu les 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.If you manipulate the position of the underlying stream after reading data into the buffer, the position of the underlying stream might not match the position of the internal buffer. 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 lorsque cela est absolument nécessaire.To reset the internal buffer, call the DiscardBufferedData method; however, this method slows performance and should be called only when absolutely necessary.

Pour obtenir la liste des tâches d’e/s courantes, consultez tâches d’e/s courantes.For a list of common I/O tasks, see Common I/O Tasks.

Voir aussi

S’applique à

Read(Span<Char>)

Lit les caractères du flux actuel dans une étendue.Reads the characters from the current stream into a span.

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

buffer
Span<Char>

Quand cette méthode retourne un résultat, contient l’étendue spécifiée de caractères remplacés par les caractères lus dans la source actuelle.When this method returns, contains the specified span of characters replaced by the characters read from the current source.

Retours

Int32

Le nombre de caractères qui ont été lus, ou 0 si c'est la fin du flux et qu'aucune donnée n'a été lue.The number of characters that have been read, or 0 if at the end of the stream and no data was read. Le nombre sera inférieur ou égal à la longueur buffer, selon que les données sont, ou non, disponibles dans le flux.The number will be less than or equal to the buffer length, depending on whether the data is available within the stream.

Exceptions

Le nombre de caractères lus à partir du flux est supérieur à la longueur buffer.The number of characters read from the stream is larger than the buffer length.

buffer a la valeur null.buffer is null.

S’applique à

Read(Char[], Int32, Int32)

Lit un nombre maximal de caractères spécifié du flux actuel dans une mémoire tampon, en commençant à l'index spécifié.Reads a specified maximum of characters from the current stream into a buffer, beginning at the specified 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

Paramètres

buffer
Char[]

Quand cette méthode est retournée, contient le tableau de caractères spécifié dont les valeurs comprises entre index et (index + count - 1) sont remplacées par les caractères lus dans la source actuelle.When this method returns, contains the specified character array with the values between index and (index + count - 1) replaced by the characters read from the current source.

index
Int32

Index de buffer auquel commencer l'écriture.The index of buffer at which to begin writing.

count
Int32

Nombre maximal de caractères à lire.The maximum number of characters to read.

Retours

Int32

Le nombre de caractères qui ont été lus, ou 0 si c'est la fin du flux et qu'aucune donnée n'a été lue.The number of characters that have been read, or 0 if at the end of the stream and no data was read. Le nombre sera inférieur ou égal à la valeur du paramètre count, selon que les données sont, ou non, disponibles dans le flux.The number will be less than or equal to the count parameter, depending on whether the data is available within the stream.

Exceptions

La longueur de la mémoire tampon moins index est inférieure à count.The buffer length minus index is less than count.

buffer a la valeur null.buffer is null.

index ou count est un nombre négatif.index or count is negative.

Une erreur d’E/S, telle que la fermeture du flux, se produit.An I/O error occurs, such as the stream is closed.

Exemples

L’exemple de code suivant lit cinq caractères à la fois jusqu’à ce que la fin du fichier soit atteinte.The following code example reads five characters at a time until the end of the file is reached.

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

Remarques

Cette méthode se substitue à TextReader.Read.This method overrides TextReader.Read.

Cette méthode retourne un entier afin qu’il puisse retourner 0 si la fin du flux a été atteinte.This method returns an integer so that it can return 0 if the end of the stream has been reached.

Lors de l’utilisation de la Read méthode, il est plus efficace d’utiliser une mémoire tampon 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 de toujours lire une valeur inférieure à la taille de bloc.When using the Read method, it is more efficient to use a buffer that is the same size as the internal buffer of the stream, where the internal buffer is set to your desired block size, and to always read less than the block size. Si la taille de la mémoire tampon interne n’a pas été spécifiée lors de la construction du flux, sa taille par défaut est de 4 kilo-octets (4096 octets).If the size of the internal buffer was unspecified when the stream was constructed, its default size is 4 kilobytes (4096 bytes). Si vous manipulez la position du flux sous-jacent après avoir lu les 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.If you manipulate the position of the underlying stream after reading data into the buffer, the position of the underlying stream might not match the position of the internal buffer. 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 lorsque cela est absolument nécessaire.To reset the internal buffer, call the DiscardBufferedData method; however, this method slows performance and should be called only when absolutely necessary.

Cette méthode retourne une valeur après que le nombre de caractères spécifiés par le count paramètre a été lu ou que la fin du fichier a été atteinte.This method returns after either the number of characters specified by the count parameter are read, or the end of the file is reached. ReadBlock est une version de blocage de Read .ReadBlock is a blocking version of Read.

Pour obtenir la liste des tâches d’e/s courantes, consultez tâches d’e/s courantes.For a list of common I/O tasks, see Common I/O Tasks.

Voir aussi

S’applique à