StreamReader.Read StreamReader.Read StreamReader.Read StreamReader.Read Method

Definizione

Legge il carattere successivo o il set di caratteri successivo dal flusso di input.Reads the next character or next set of characters from the input stream.

Overload

Read() Read() Read() Read()

Legge il carattere successivo dal flusso di input e fa avanzare di un carattere la posizione del carattere.Reads the next character from the input stream and advances the character position by one character.

Read(Span<Char>) Read(Span<Char>) Read(Span<Char>) Read(Span<Char>)
Read(Char[], Int32, Int32) Read(Char[], Int32, Int32) Read(Char[], Int32, Int32) Read(Char[], Int32, Int32)

Legge un numero massimo specificato di caratteri dal flusso corrente e scrive i dati in un buffer, iniziando dall'indice specificato.Reads a specified maximum of characters from the current stream into a buffer, beginning at the specified index.

Read() Read() Read() Read()

Legge il carattere successivo dal flusso di input e fa avanzare di un carattere la posizione del carattere.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

Restituisce

Carattere successivo dal flusso di input rappresentato come oggetto Int32 oppure -1 se non sono disponibili altri caratteri.The next character from the input stream represented as an Int32 object, or -1 if no more characters are available.

Eccezioni

Si è verificato un errore di I/O.An I/O error occurs.

Esempi

Esempio di codice seguente viene illustrato un semplice utilizzo del Read (metodo).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
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

Esempio di codice seguente illustra la lettura di un singolo carattere utilizzando il Read() overload del metodo, la formattazione dell'output come decimale ed esadecimale dell'intero ASCII.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
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 'Main
End Class 'StrmRdrRead

Commenti

Questo metodo esegue l'override di TextReader.Read.This method overrides TextReader.Read.

Questo metodo restituisce un intero in modo che venga restituito -1 se è stata raggiunta la fine del flusso.This method returns an integer so that it can return -1 if the end of the stream has been reached. Se si modifica la posizione del flusso sottostante dopo la lettura dei dati nel buffer, la posizione del flusso sottostante potrebbe non corrispondere la posizione del buffer interno.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. Per reimpostare il buffer interno, chiamare il DiscardBufferedData metodo; tuttavia, questo metodo determina un rallentamento delle prestazioni e deve essere chiamato solo se assolutamente necessario.To reset the internal buffer, call the DiscardBufferedData method; however, this method slows performance and should be called only when absolutely necessary.

Per un elenco delle attività dei / o comuni, vedere attività dei / o comuni.For a list of common I/O tasks, see Common I/O Tasks.

Vedi anche

Read(Span<Char>) Read(Span<Char>) Read(Span<Char>) Read(Span<Char>)

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

Parametri

buffer
Span<Char>

Restituisce

Read(Char[], Int32, Int32) Read(Char[], Int32, Int32) Read(Char[], Int32, Int32) Read(Char[], Int32, Int32)

Legge un numero massimo specificato di caratteri dal flusso corrente e scrive i dati in un buffer, iniziando dall'indice specificato.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

Parametri

buffer
Char[]

Quando questo metodo viene restituito, il buffer contiene la matrice di caratteri specificata con i valori compresi tra index e (index + count - 1) sostituiti dai caratteri letti dall'origine corrente.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 Int32 Int32 Int32

Indice di buffer da cui iniziare la scrittura.The index of buffer at which to begin writing.

count
Int32 Int32 Int32 Int32

Numero massimo di caratteri da leggere.The maximum number of characters to read.

Restituisce

Numero di caratteri letti oppure 0 se alla fine del flusso non è stato letto alcun dato.The number of characters that have been read, or 0 if at the end of the stream and no data was read. Il numero sarà minore o uguale al parametro count, a seconda che i dati siano disponibili o meno all'interno del flusso.The number will be less than or equal to the count parameter, depending on whether the data is available within the stream.

Eccezioni

La lunghezza del buffer meno index è minore di count.The buffer length minus index is less than count.

Si è verificato un errore di I/O, come la chiusura del flusso.An I/O error occurs, such as the stream is closed.

Esempi

Esempio di codice seguente legge cinque caratteri alla volta fino a quando non viene raggiunta la fine del file.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
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

Commenti

Questo metodo esegue l'override di TextReader.Read.This method overrides TextReader.Read.

Questo metodo restituisce un intero in modo che venga restituito 0 se è stata raggiunta la fine del flusso.This method returns an integer so that it can return 0 if the end of the stream has been reached.

Quando si usa il Read metodo, è più efficiente per usare un buffer che è la stessa dimensione del buffer interno del flusso, in cui il buffer interno viene impostato sulla dimensione di blocco desiderato e per leggere sempre inferiore alla dimensione di blocco.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. Se le dimensioni del buffer interno non specificata durante il flusso è stato costruito, le dimensioni predefinite pari a 4 KB (4096 byte).If the size of the internal buffer was unspecified when the stream was constructed, its default size is 4 kilobytes (4096 bytes). Se si modifica la posizione del flusso sottostante dopo la lettura dei dati nel buffer, la posizione del flusso sottostante potrebbe non corrispondere la posizione del buffer interno.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. Per reimpostare il buffer interno, chiamare il DiscardBufferedData metodo; tuttavia, questo metodo determina un rallentamento delle prestazioni e deve essere chiamato solo se assolutamente necessario.To reset the internal buffer, call the DiscardBufferedData method; however, this method slows performance and should be called only when absolutely necessary.

Questo metodo restituisce dopo che il numero di caratteri specificato da di count parametro vengono lette o viene raggiunta la fine del file.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 è una versione del blocco Read.ReadBlock is a blocking version of Read.

Per un elenco delle attività dei / o comuni, vedere attività dei / o comuni.For a list of common I/O tasks, see Common I/O Tasks.

Vedi anche

Si applica a