BufferedStream.Read Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Overload
Read(Span<Byte>) |
Copia byte dal flusso memorizzato nel buffer corrente a un intervallo di byte e sposta in avanti la posizione all'interno del flusso memorizzato nel buffer in base al numero di byte letti. |
Read(Byte[], Int32, Int32) |
Copia i byte dal flusso correntemente memorizzato nel buffer in una matrice. |
Read(Span<Byte>)
- Origine:
- BufferedStream.cs
- Origine:
- BufferedStream.cs
- Origine:
- BufferedStream.cs
Copia byte dal flusso memorizzato nel buffer corrente a un intervallo di byte e sposta in avanti la posizione all'interno del flusso memorizzato nel buffer in base al numero di byte letti.
public:
override int Read(Span<System::Byte> destination);
public override int Read (Span<byte> destination);
override this.Read : Span<byte> -> int
Public Overrides Function Read (destination As Span(Of Byte)) As Integer
Parametri
Un'area di memoria. Quando questo metodo termina, il contenuto di quest'area viene sostituito dai byte letti dall'origine corrente.
Restituisce
Numero complessivo di byte letti nel 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.
Commenti
Utilizzare la proprietà per determinare se l'istanza CanRead corrente supporta la lettura. Usare il ReadAsync metodo per leggere in modo asincrono dal flusso corrente.
Le implementazioni di questo metodo leggevano un massimo di buffer.Length
byte dal flusso corrente e le archiviavano in buffer
. La posizione corrente all'interno del flusso è avanzata dal numero di byte letti; Tuttavia, se si verifica un'eccezione, la posizione corrente all'interno del flusso rimane invariata. Le implementazioni restituiscono il numero di byte letti. L'implementazione blocca fino a quando non è possibile leggere almeno un byte di dati, nel caso in cui non siano disponibili dati. Read
restituisce 0 solo quando non sono presenti più dati nel flusso e non è più previsto (ad esempio un socket chiuso o una fine di file). Un'implementazione è gratuita per restituire meno byte rispetto alla richiesta anche se la fine del flusso non è stata raggiunta.
Usare BinaryReader per la lettura dei tipi di dati primitivi.
Si applica a
Read(Byte[], Int32, Int32)
- Origine:
- BufferedStream.cs
- Origine:
- BufferedStream.cs
- Origine:
- BufferedStream.cs
Copia i byte dal flusso correntemente memorizzato nel buffer in una matrice.
public:
override int Read(cli::array <System::Byte> ^ array, int offset, int count);
public:
override int Read(cli::array <System::Byte> ^ buffer, int offset, int count);
public override int Read (byte[] array, int offset, int count);
public override int Read (byte[] buffer, int offset, int count);
override this.Read : byte[] * int * int -> int
override this.Read : byte[] * int * int -> int
Public Overrides Function Read (array As Byte(), offset As Integer, count As Integer) As Integer
Public Overrides Function Read (buffer As Byte(), offset As Integer, count As Integer) As Integer
Parametri
- arraybuffer
- Byte[]
Buffer in cui verranno copiati i byte.
- offset
- Int32
Offset dei byte nel buffer da cui iniziare la lettura dei byte.
- count
- Int32
Numero di byte da leggere.
Restituisce
Numero complessivo di byte letti nel parametro array
. Può essere minore del numero di byte richiesti se tale quantità di byte non è disponibile o 0 se è stata raggiunta la fine del flusso prima della lettura dei dati.
Eccezioni
La lunghezza di array
meno offset
è minore di count
.
array
è null
.
offset
o count
è negativo.
Il flusso non è aperto o è null
.
Il flusso non supporta la lettura.
Sono stati chiamati dei metodi dopo la chiusura del flusso.
Esempio
Questo esempio di codice fa parte di un esempio più grande fornito per la BufferedStream classe.
// Receive data using the BufferedStream.
Console::WriteLine( "Receiving data using BufferedStream." );
bytesReceived = 0;
startTime = DateTime::Now;
while ( bytesReceived < numberOfLoops * receivedData->Length )
{
bytesReceived += bufStream->Read( receivedData, 0, receivedData->Length );
}
bufferedTime = (DateTime::Now - startTime).TotalSeconds;
Console::WriteLine( "{0} bytes received in {1} seconds.\n", bytesReceived.ToString(), bufferedTime.ToString( "F1" ) );
// Receive data using the BufferedStream.
Console.WriteLine("Receiving data using BufferedStream.");
bytesReceived = 0;
startTime = DateTime.Now;
int numBytesToRead = receivedData.Length;
while (numBytesToRead > 0)
{
// Read may return anything from 0 to numBytesToRead.
int n = bufStream.Read(receivedData,0, receivedData.Length);
// The end of the file is reached.
if (n == 0)
break;
bytesReceived += n;
numBytesToRead -= n;
}
bufferedTime = (DateTime.Now - startTime).TotalSeconds;
Console.WriteLine("{0} bytes received in {1} seconds.\n",
bytesReceived.ToString(),
bufferedTime.ToString("F1"));
// Receive data using the BufferedStream.
printfn "Receiving data using BufferedStream."
bytesReceived <- 0
let startTime = DateTime.Now
let mutable numBytesToRead = receivedData.Length
let mutable broken = false
while not broken && numBytesToRead > 0 do
// Read may return anything from 0 to numBytesToRead.
let n = bufStream.Read(receivedData,0, receivedData.Length)
// The end of the file is reached.
if n = 0 then
broken <- true
else
bytesReceived <- bytesReceived + n
numBytesToRead <- numBytesToRead - n
let bufferedTime = (DateTime.Now - startTime).TotalSeconds
printfn $"{bytesReceived} bytes received in {bufferedTime:F1} seconds.\n"
' Receive data using the BufferedStream.
Console.WriteLine("Receiving data using BufferedStream.")
bytesReceived = 0
startTime = DateTime.Now
Dim numBytesToRead As Integer = receivedData.Length
Dim n As Integer
Do While numBytesToRead > 0
'Read my return anything from 0 to numBytesToRead
n = bufStream.Read(receivedData, 0, receivedData.Length)
'The end of the file is reached.
If n = 0 Then
Exit Do
End If
bytesReceived += n
numBytesToRead -= n
Loop
bufferedTime = DateTime.Now.Subtract(startTime).TotalSeconds
Console.WriteLine("{0} bytes received in {1} " & _
"seconds." & vbCrLf, _
bytesReceived.ToString(), _
bufferedTime.ToString("F1"))
Commenti
Il Read
metodo restituirà 0 solo se viene raggiunta la fine del flusso. In tutti gli altri casi, Read
legge sempre almeno un byte dal flusso prima di restituire. Per definizione, se non sono disponibili dati dal flusso dopo una chiamata a Read
, il Read
metodo restituisce 0 (la fine del flusso viene raggiunta automaticamente). Un'implementazione è gratuita per restituire meno byte rispetto alla richiesta anche se la fine del flusso non è stata raggiunta.
Usare BinaryReader per la lettura dei tipi di dati primitivi.
Vedi anche
- BlockCopy(Array, Int32, Array, Int32, Int32)
- CanRead
- Write(Byte[], Int32, Int32)
- File e Stream I/O
- Procedura: Leggere testo da un file
- Procedura: Scrivere un testo in un file