BufferedStream.Read(Byte[], Int32, Int32) 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.
Copia i byte dal flusso memorizzato nel buffer corrente in una matrice.
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[]
Buffer in cui copiare i byte.
- offset
- Int32
Offset di byte nel buffer in corrispondenza del quale iniziare la lettura dei byte.
- count
- Int32
Numero di byte da leggere.
Valori restituiti
Numero totale di byte letti in array. Può essere minore del numero di byte richiesti se il numero di byte non è attualmente disponibile o 0 se la fine del flusso è stata raggiunta prima che tutti i dati possano essere letti.
Eccezioni
La lunghezza di meno array è minore di .offsetcount
array è null.
offset o count è negativo.
Il flusso non è aperto o è null.
Il flusso non supporta la lettura.
I metodi sono stati chiamati dopo la chiusura del flusso.
Esempio
Questo esempio di codice fa parte di un esempio più ampio fornito per la BufferedStream classe .
// 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 in una chiamata a Read, il Read metodo restituisce 0 (la fine del flusso viene raggiunta automaticamente). Un'implementazione è libera di restituire meno byte di quanto richiesto anche se la fine del flusso non è stata raggiunta.
Usare BinaryReader per la lettura dei tipi di dati primitivi.