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> ^ 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未満です。
array は nullです。
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 を使用します。
こちらもご覧ください
- BlockCopy(Array, Int32, Array, Int32, Int32)
- CanRead
- Write(Byte[], Int32, Int32)
- ファイルおよびストリーム入出力
- 方法: ファイルからテキストを読み取る
- 方法: ファイルにテキストを書き込む