BufferedStream.Read(Byte[], Int32, Int32) メソッド

定義

現在のバッファーストリームから配列にバイトをコピーします。

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

パラメーター

array
Byte[]

バイトのコピー先となるバッファー。

offset
Int32

バイトの読み取りを開始するバッファー内のバイト オフセット。

count
Int32

読み取るバイト数。

返品

arrayに読み取られた合計バイト数。 この値は、現在使用できないバイト数の場合は要求されたバイト数より少なく、ストリームの末尾に達した場合はデータを読み取る前に 0 を指定できます。

例外

array - offsetの長さがcount未満です。

arraynullです。

offset または count が負の値です。

ストリームが開かっていないか、 null

ストリームは読み取りをサポートしていません。

ストリームが閉じられた後、メソッドが呼び出されました。

このコード例は、 BufferedStream クラスに提供されるより大きな例の一部です。

// 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"))

注釈

Read メソッドは、ストリームの末尾に達した場合にのみ 0 を返します。 それ以外の場合は、 Read 常にストリームから少なくとも 1 バイトを読み取ってから戻ります。 定義上、 Readの呼び出し時にストリームからデータが使用できない場合、 Read メソッドは 0 を返します (ストリームの末尾に自動的に到達します)。 実装は、ストリームの末尾に達していない場合でも、要求されたバイト数よりも少ないバイト数を返します。

プリミティブ データ型を読み取る場合は、 BinaryReader を使用します。

適用対象

こちらもご覧ください