FileStream.Read FileStream.Read FileStream.Read FileStream.Read Method

Definizione

Overload

Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32)

Legge un blocco di byte dal flusso e scrive i dati in un determinato buffer.Reads a block of bytes from the stream and writes the data in a given buffer.

Read(Span<Byte>) Read(Span<Byte>) Read(Span<Byte>) Read(Span<Byte>)

Legge una sequenza di byte dal flusso di file corrente e fa avanzare la posizione corrente nel flusso di file del numero di byte letti.Reads a sequence of bytes from the current file stream and advances the position within the file stream by the number of bytes read.

Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32)

Legge un blocco di byte dal flusso e scrive i dati in un determinato buffer.Reads a block of bytes from the stream and writes the data in a given buffer.

public:
 override int Read(cli::array <System::Byte> ^ array, int offset, int count);
public override int Read (byte[] array, int offset, int count);
override this.Read : byte[] * int * int -> int
Public Overrides Function Read (array As Byte(), offset As Integer, count As Integer) As Integer

Parametri

array
Byte[]

Quando questo metodo viene restituito, contiene la matrice di byte specificata con i valori compresi tra offset e (offset + count - 1) sostituiti con i byte letti dall'origine corrente.When this method returns, contains the specified byte array with the values between offset and (offset + count - 1) replaced by the bytes read from the current source.

offset
Int32 Int32 Int32 Int32

Offset dei byte in array in corrispondenza del quale cui verranno inseriti i byte letti.The byte offset in array at which the read bytes will be placed.

count
Int32 Int32 Int32 Int32

Numero massimo di byte da leggere.The maximum number of bytes to read.

Restituisce

Numero complessivo di byte letti nel buffer.The total number of bytes read into the buffer. Può essere inferiore al numero dei byte richiesti se tale numero di byte non è disponibile oppure pari a zero se è stata raggiunta la fine del flusso.This might be less than the number of bytes requested if that number of bytes are not currently available, or zero if the end of the stream is reached.

Eccezioni

Il flusso non supporta la lettura.The stream does not support reading.

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

offset e count descrivono un intervallo non valido in array.offset and count describe an invalid range in array.

Sono stati chiamati dei metodi dopo la chiusura del flusso.Methods were called after the stream was closed.

Esempi

Nell'esempio seguente viene letto il contenuto di FileStream un oggetto e lo scrive FileStreamin un altro.The following example reads the contents from a FileStream and writes it into another FileStream.

using System;
using System.IO;

class Test
{

public static void Main()
{
    // Specify a file to read from and to create.
    string pathSource = @"c:\tests\source.txt";
    string pathNew = @"c:\tests\newfile.txt";

    try
    {

        using (FileStream fsSource = new FileStream(pathSource,
            FileMode.Open, FileAccess.Read))
        {

            // Read the source file into a byte array.
            byte[] bytes = new byte[fsSource.Length];
            int numBytesToRead = (int)fsSource.Length;
            int numBytesRead = 0;
            while (numBytesToRead > 0)
            {
                // Read may return anything from 0 to numBytesToRead.
                int n = fsSource.Read(bytes, numBytesRead, numBytesToRead);

                // Break when the end of the file is reached.
                if (n == 0)
                    break;

                numBytesRead += n;
                numBytesToRead -= n;
            }
             numBytesToRead = bytes.Length;

            // Write the byte array to the other FileStream.
            using (FileStream fsNew = new FileStream(pathNew,
                FileMode.Create, FileAccess.Write))
            {
                fsNew.Write(bytes, 0, numBytesToRead);
            }
        }
    }
    catch (FileNotFoundException ioEx)
    {
        Console.WriteLine(ioEx.Message);
    }
}
}
Imports System.IO
Class Test
    
Public Shared Sub Main()
    ' Specify a file to read from and to create.
    Dim pathSource As String = "c:\tests\source.txt"
    Dim pathNew As String = "c:\tests\newfile.txt"
    Try 
        Using fsSource As FileStream = New FileStream(pathSource, _
            FileMode.Open, FileAccess.Read)
            ' Read the source file into a byte array.
                Dim bytes() As Byte = New Byte((fsSource.Length) - 1) {}
                Dim numBytesToRead As Integer = CType(fsSource.Length,Integer)
                Dim numBytesRead As Integer = 0

                While (numBytesToRead > 0)
                    ' Read may return anything from 0 to numBytesToRead.
                    Dim n As Integer = fsSource.Read(bytes, numBytesRead, _
                        numBytesToRead)
                    ' Break when the end of the file is reached.
                    If (n = 0) Then
                        Exit While
                    End If
                    numBytesRead = (numBytesRead + n)
                    numBytesToRead = (numBytesToRead - n)

                End While
            numBytesToRead = bytes.Length

            ' Write the byte array to the other FileStream.
            Using fsNew As FileStream = New FileStream(pathNew, _
                FileMode.Create, FileAccess.Write)
                fsNew.Write(bytes, 0, numBytesToRead)
            End Using
        End Using
    Catch ioEx As FileNotFoundException
        Console.WriteLine(ioEx.Message)
    End Try
End Sub
End Class

Commenti

Questo metodo esegue l'override del metodo Read.This method overrides Read.

Il offset parametro fornisce l'offset del byte in array (indice del buffer) in corrispondenza del quale iniziare la lettura e il count parametro indica il numero massimo di byte da leggere da questo flusso.The offset parameter gives the offset of the byte in array (the buffer index) at which to begin reading, and the count parameter gives the maximum number of bytes to be read from this stream. Il valore restituito è il numero effettivo di byte letti oppure zero se viene raggiunta la fine del flusso.The returned value is the actual number of bytes read, or zero if the end of the stream is reached. Se l'operazione di lettura ha esito positivo, la posizione corrente del flusso è avanzata dal numero di byte letti.If the read operation is successful, the current position of the stream is advanced by the number of bytes read. Se si verifica un'eccezione, la posizione corrente del flusso è invariata.If an exception occurs, the current position of the stream is unchanged.

Il Read metodo restituisce zero solo dopo avere raggiunto la fine del flusso.The Read method returns zero only after reaching the end of the stream. In caso Read contrario, legge sempre almeno un byte dal flusso prima di restituire.Otherwise, Read always reads at least one byte from the stream before returning. Se non sono disponibili dati dal flusso in seguito a una chiamata Reada, il metodo si bloccherà fino a quando non sarà possibile restituire almeno un byte di dati.If no data is available from the stream upon a call to Read, the method will block until at least one byte of data can be returned. Un'implementazione può restituire un numero minore di byte rispetto a quelli richiesti anche se non è stata raggiunta la fine del flusso.An implementation is free to return fewer bytes than requested even if the end of the stream has not been reached.

Utilizzare BinaryReader per la lettura di tipi di dati primitivi.Use BinaryReader for reading primitive data types.

Non interrompere un thread che esegue un'operazione di lettura.Do not interrupt a thread that is performing a read operation. Sebbene l'applicazione possa sembrare eseguita correttamente dopo che il thread è stato sbloccato, l'interruzione può ridurre le prestazioni e l'affidabilità dell'applicazione.Although the application may appear to run successfully after the thread is unblocked, the interruption can decrease your application's performance and reliability.

Per un elenco delle operazioni comuni di file e directory, vedere attività di I/O comuni.For a list of common file and directory operations, see Common I/O Tasks.

Vedi anche

Read(Span<Byte>) Read(Span<Byte>) Read(Span<Byte>) Read(Span<Byte>)

Legge una sequenza di byte dal flusso di file corrente e fa avanzare la posizione corrente nel flusso di file del numero di byte letti.Reads a sequence of bytes from the current file stream and advances the position within the file stream by the number of bytes read.

public:
 override int Read(Span<System::Byte> buffer);
public override int Read (Span<byte> buffer);
override this.Read : Span<byte> -> int
Public Overrides Function Read (buffer As Span(Of Byte)) As Integer

Parametri

buffer
Span<Byte>

Un'area di memoria.A region of memory. Quando questo metodo termina, il contenuto di quest'area viene sostituito dai byte letti dal flusso di file corrente.When this method returns, the contents of this region are replaced by the bytes read from the current file stream.

Restituisce

Numero complessivo di byte letti nel buffer.The total number of bytes read into the buffer. È possibile che questo numero sia inferiore a quello dei byte allocati nel buffer se la quantità di byte disponibili è minore oppure che corrisponda a zero (0) se è stata raggiunta la fine del flusso.This can be less than the number of bytes allocated in the buffer if that many bytes are not currently available, or zero (0) if the end of the stream has been reached.

Commenti

Utilizzare la CanRead proprietà per determinare se l'istanza corrente supporta la lettura.Use the CanRead property to determine whether the current instance supports reading. Usare il ReadAsync metodo per leggere in modo asincrono dal flusso corrente.Use the ReadAsync method to read asynchronously from the current stream.

Questo metodo legge un massimo di buffer.Length byte dal flusso di file corrente e li archivia in buffer.This method reads a maximum of buffer.Length bytes from the current file stream and stores them in buffer. La posizione corrente all'interno del flusso di file è avanzata dal numero di byte letti; Tuttavia, se si verifica un'eccezione, la posizione corrente all'interno del flusso di file rimane invariata.The current position within the file stream is advanced by the number of bytes read; however, if an exception occurs, the current position within the file stream remains unchanged. Il metodo si bloccherà fino a quando non sarà possibile leggere almeno un byte di dati, nel caso in cui non siano disponibili dati.The method will block until at least one byte of data can be read, in the event that no data is available. Readrestituisce 0 solo quando non sono presenti altri dati nel flusso di file e non sono previsti altri dati, ad esempio un socket chiuso o una fine del file.Read returns 0 only when there is no more data in the file stream and no more is expected (such as a closed socket or end of file). Il metodo può restituire un numero di byte inferiore a quello richiesto anche se non è stata raggiunta la fine del flusso di file.The method is free to return fewer bytes than requested even if the end of the file stream has not been reached.

Utilizzare BinaryReader per la lettura di tipi di dati primitivi.Use BinaryReader for reading primitive data types.

Si applica a