次の方法で共有


BufferedStream.Read メソッド

定義

オーバーロード

名前 説明
Read(Span<Byte>)

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

Read(Byte[], Int32, Int32)

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

Read(Span<Byte>)

ソース:
BufferedStream.cs
ソース:
BufferedStream.cs
ソース:
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
ソース:
BufferedStream.cs
ソース:
BufferedStream.cs

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

public:
 override int Read(cli::array <System::Byte> ^ buffer, int offset, int count);
public:
 override int Read(cli::array <System::Byte> ^ array, int offset, int count);
public override int Read(byte[] buffer, int offset, int count);
public override int Read(byte[] array, int offset, int count);
override this.Read : byte[] * int * int -> int
override this.Read : byte[] * int * int -> int
Public Overrides Function Read (buffer As Byte(), offset As Integer, count As Integer) As Integer
Public Overrides Function Read (array As Byte(), offset As Integer, count As Integer) As Integer

パラメーター

bufferarray
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 を使用します。

こちらもご覧ください

適用対象