BufferedStream.Read メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
オーバーロード
Read(Span<Byte>) |
現在のバッファー ストリームからバイトの範囲にバイトをコピーし、読み取ったバイト数だけバッファー ストリーム内の現在位置を進めます。 |
Read(Byte[], Int32, Int32) |
現在のバッファー ストリームから配列にバイトをコピーします。 |
Read(Span<Byte>)
現在のバッファー ストリームからバイトの範囲にバイトをコピーし、読み取ったバイト数だけバッファー ストリーム内の現在位置を進めます。
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
パラメーター
戻り値
バッファーに読み取られた合計バイト数。 要求しただけのバイト数を読み取ることができなかった場合、この値はバッファーに割り当てられているバイト数より小さくなります。ストリームの末尾に到達した場合は 0 (ゼロ) になることがあります。
注釈
プロパティを使用して、 CanRead 現在のインスタンスが読み取りをサポートしているかどうかを判断します。 メソッドを ReadAsync 使用して、現在のストリームから非同期的に読み取ります。
このメソッドの実装では、現在の buffer.Length
ストリームから最大バイト数を読み取り、 に buffer
格納します。 ストリーム内の現在の位置は、読み取られたバイト数だけ進みます。ただし、例外が発生した場合、ストリーム内の現在の位置は変更されません。 実装は、読み取られたバイト数を返します。 この実装では、データが使用できない場合に、少なくとも 1 バイトのデータを読み取ることができるまでブロックされます。 Read
は、ストリームにこれ以上データがなく、それ以上必要ない場合 (閉じたソケットやファイルの終わりなど) にのみ 0 を返します。 実装は、ストリームの末尾に達していない場合でも、要求されたバイト数よりも少ないバイト数を自由に返します。
プリミティブ データ型の読み取りに使用 BinaryReader します。
適用対象
Read(Byte[], Int32, Int32)
現在のバッファー ストリームから配列にバイトをコピーします。
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
未満です。
array
が null
です。
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 バイトを読み取ります。 定義上、 のRead
Read
呼び出し時にストリームから使用できるデータがない場合、メソッドは 0 を返します (ストリームの末尾に自動的に到達します)。 実装は、ストリームの末尾に達していない場合でも、要求されたバイト数よりも少ないバイト数を自由に返します。
プリミティブ データ型の読み取りに使用 BinaryReader します。
こちらもご覧ください
- BlockCopy(Array, Int32, Array, Int32, Int32)
- CanRead
- Write(Byte[], Int32, Int32)
- ファイルおよびストリーム入出力
- 方法: ファイルからのテキストの読み取り
- 方法: テキストのファイルへの書き込み
適用対象
.NET