BufferedStream.Read(Byte[], Int32, Int32) Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Kopierar byte från den aktuella buffrade strömmen till en matris.
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
Parametrar
- array
- Byte[]
Bufferten som byte ska kopieras till.
- offset
- Int32
Byteförskjutningen i bufferten där byte ska börja läsas.
- count
- Int32
Antalet byte som ska läsas.
Returer
Det totala antalet byte som lästs in i array. Detta kan vara mindre än antalet byte som begärs om så många byte inte är tillgängliga för närvarande, eller 0 om strömmens slut har nåtts innan data kan läsas.
Undantag
Längden på array minus offset är mindre än count.
array är null.
offset eller count är negativ.
Strömmen är inte öppen eller är null.
Strömmen stöder inte läsning.
Metoder anropades efter att strömmen stängdes.
Exempel
Det här kodexemplet är en del av ett större exempel för BufferedStream klassen.
// 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"))
Kommentarer
Metoden Read returnerar endast 0 om strömmens slut nås. I alla andra fall Read läser du alltid minst en byte från strömmen innan den returneras. Om inga data per definition är tillgängliga från strömmen vid ett anrop till ReadRead returnerar metoden 0 (slutet av dataströmmen nås automatiskt). En implementering kan returnera färre byte än vad som begärts även om dataströmmens slut inte har nåtts.
Används BinaryReader för att läsa primitiva datatyper.