次の方法で共有


BufferedStream.Read メソッド

定義

オーバーロード

Read(Span<Byte>)

現在のバッファー ストリームからバイトの範囲にバイトをコピーし、読み取ったバイト数だけバッファー ストリーム内の現在位置を進めます。

Read(Byte[], Int32, Int32)

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

Read(Span<Byte>)

ソース:
BufferedStream.cs
ソース:
BufferedStream.cs
ソース:
BufferedStream.cs

現在のバッファー ストリームからバイトの範囲にバイトをコピーし、読み取ったバイト数だけバッファー ストリーム内の現在位置を進めます。

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

パラメーター

destination
Span<Byte>

メモリの領域。 このメソッドが戻ると、この領域のコンテンツは現在のソースから読み取られたバイトに置き換えられます。

戻り値

バッファーに読み取られた合計バイト数。 要求しただけのバイト数を読み取ることができなかった場合、この値はバッファーに割り当てられているバイト数より小さくなります。ストリームの末尾に到達した場合は 0 (ゼロ) になることがあります。

注釈

プロパティを使用して、 CanRead 現在のインスタンスが読み取りをサポートしているかどうかを判断します。 メソッドを ReadAsync 使用して、現在のストリームから非同期的に読み取ります。

このメソッドの実装では、現在の buffer.Length ストリームから最大バイト数を読み取り、 に buffer格納します。 ストリーム内の現在の位置は、読み取られたバイト数だけ進みます。ただし、例外が発生した場合、ストリーム内の現在の位置は変更されません。 実装は、読み取られたバイト数を返します。 この実装では、データが使用できない場合に、少なくとも 1 バイトのデータを読み取ることができるまでブロックされます。 Read は、ストリームにこれ以上データがなく、それ以上必要ない場合 (閉じたソケットやファイルの終わりなど) にのみ 0 を返します。 実装は、ストリームの末尾に達していない場合でも、要求されたバイト数よりも少ないバイト数を自由に返します。

プリミティブ データ型の読み取りに使用 BinaryReader します。

適用対象

Read(Byte[], Int32, Int32)

ソース:
BufferedStream.cs
ソース:
BufferedStream.cs
ソース:
BufferedStream.cs

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

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

パラメーター

arraybuffer
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;
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"))

注釈

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

プリミティブ データ型の読み取りに使用 BinaryReader します。

こちらもご覧ください

適用対象