Stream.Read メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
オーバーロード
Read(Span<Byte>) |
派生クラスによってオーバーライドされた場合は、現在のストリームからバイト シーケンスを読み取り、読み取ったバイト数の分だけストリームの位置を進めます。 |
Read(Byte[], Int32, Int32) |
派生クラスによってオーバーライドされた場合は、現在のストリームからバイト シーケンスを読み取り、読み取ったバイト数の分だけストリームの位置を進めます。 |
Read(Span<Byte>)
- ソース:
- Stream.cs
- ソース:
- Stream.cs
- ソース:
- Stream.cs
派生クラスによってオーバーライドされた場合は、現在のストリームからバイト シーケンスを読み取り、読み取ったバイト数の分だけストリームの位置を進めます。
public:
virtual int Read(Span<System::Byte> buffer);
public virtual int Read (Span<byte> buffer);
abstract member Read : Span<byte> -> int
override this.Read : Span<byte> -> int
Public Overridable Function Read (buffer As Span(Of Byte)) As Integer
パラメーター
戻り値
バッファーに読み取られた合計バイト数。 現在使用できないバイト数が多い場合はバッファーのサイズより小さく、バッファーの長さが 0 またはストリームの末尾に達した場合は 0 を指定できます。
注釈
プロパティを使用して、 CanRead 現在のインスタンスが読み取りをサポートしているかどうかを判断します。 メソッドを ReadAsync 使用して、現在のストリームから非同期的に読み取ります。
このメソッドの実装では、現在の buffer.Length
ストリームから最大バイト数を読み取り、 に buffer
格納します。 ストリーム内の現在の位置は、読み取られたバイト数だけ進みます。ただし、例外が発生した場合、ストリーム内の現在の位置は変更されません。 実装は、読み取られたバイト数を返します。 0 バイトを超えるバイトが要求された場合、少なくとも 1 バイトのデータを読み取ることができるまで、実装は操作を完了しません (0 バイトが要求された場合、少なくとも 1 バイトが使用可能になるまで、一部の実装も同様に完了しない可能性がありますが、このような場合はストリームからデータが消費されません)。 Read は、0 バイトが要求された場合、またはストリームにこれ以上データがなく、それ以上必要ない場合 (閉じたソケットやファイルの終わりなど) にのみ 0 を返します。 実装は、ストリームの末尾に達していない場合でも、要求されたバイト数よりも少ないバイト数を自由に返します。
プリミティブ データ型の読み取りに使用 BinaryReader します。
適用対象
Read(Byte[], Int32, Int32)
- ソース:
- Stream.cs
- ソース:
- Stream.cs
- ソース:
- Stream.cs
派生クラスによってオーバーライドされた場合は、現在のストリームからバイト シーケンスを読み取り、読み取ったバイト数の分だけストリームの位置を進めます。
public:
abstract int Read(cli::array <System::Byte> ^ buffer, int offset, int count);
public abstract int Read (byte[] buffer, int offset, int count);
abstract member Read : byte[] * int * int -> int
Public MustOverride Function Read (buffer As Byte(), offset As Integer, count As Integer) As Integer
パラメーター
- buffer
- Byte[]
バイト配列。 このメソッドが戻るとき、指定したバイト配列の offset
から (offset
+ count
- 1) までの値が、現在のソースから読み取られたバイトに置き換えられます。
- offset
- Int32
現在のストリームから読み取ったデータの格納を開始する位置を示す buffer
内のバイト オフセット。インデックス番号は 0 から始まります。
- count
- Int32
現在のストリームから読み取る最大バイト数。
戻り値
バッファーに読み取られた合計バイト数。 この値は、そのバイト数が現在使用できない場合は要求されたバイト数より小さく、is が 0 またはストリームの末尾に達した場合 count
は 0 を指定できます。
例外
offset
と count
の合計が、バッファーの長さよりも大きいです。
buffer
が null
です。
offset
または count
が負の値です。
I/O エラーが発生します。
ストリームは読み取りをサポートしません。
ストリームが閉じた後でメソッドが呼び出されました。
例
次の例は、 を使用 Read してデータ ブロックを読み取る方法を示しています。
using namespace System;
using namespace System::IO;
public ref class Block
{
public:
static void Main()
{
Stream^ s = gcnew MemoryStream();
for (int i = 0; i < 100; i++)
{
s->WriteByte((Byte)i);
}
s->Position = 0;
// Now read s into a byte buffer.
array<Byte>^ bytes = gcnew array<Byte>(s->Length);
int numBytesToRead = (int) s->Length;
int numBytesRead = 0;
while (numBytesToRead > 0)
{
// Read may return anything from 0 to 10.
int n = s->Read(bytes, numBytesRead, 10);
// The end of the file is reached.
if (n == 0)
{
break;
}
numBytesRead += n;
numBytesToRead -= n;
}
s->Close();
// numBytesToRead should be 0 now, and numBytesRead should
// equal 100.
Console::WriteLine("number of bytes read: {0:d}", numBytesRead);
}
};
int main()
{
Block::Main();
}
using System;
using System.IO;
public class Block
{
public static void Main()
{
Stream s = new MemoryStream();
for (int i = 0; i < 122; i++)
{
s.WriteByte((byte)i);
}
s.Position = 0;
// Now read s into a byte buffer with a little padding.
byte[] bytes = new byte[s.Length + 10];
int numBytesToRead = (int)s.Length;
int numBytesRead = 0;
do
{
// Read may return anything from 0 to 10.
int n = s.Read(bytes, numBytesRead, 10);
numBytesRead += n;
numBytesToRead -= n;
} while (numBytesToRead > 0);
s.Close();
Console.WriteLine("number of bytes read: {0:d}", numBytesRead);
}
}
Imports System.IO
Public Class Block
Public Shared Sub Main()
Dim s As Stream = New MemoryStream()
For i As Integer = 0 To 121
s.WriteByte(CType(i, Byte))
Next i
s.Position = 0
' Now read s into a byte buffer that is padded slightly.
Dim bytes(s.Length + 10) As Byte
Dim numBytesToRead As Integer = s.Length
Dim numBytesRead As Integer = 0
Dim n As Integer
Do
' Read may return anything from 0 to 10.
n = s.Read(bytes, numBytesRead, 10)
' The end of the file is reached.
numBytesRead += n
numBytesToRead -= n
Loop While numBytesToRead > 0
s.Close()
Console.WriteLine("number of bytes read: {0:d}", numBytesRead)
End Sub
End Class
注釈
プロパティを使用して、 CanRead 現在のインスタンスが読み取りをサポートしているかどうかを判断します。 メソッドを ReadAsync 使用して、現在のストリームから非同期的に読み取ります。
このメソッドの実装では、現在のcount
ストリームから最大バイト数を読み取り、 でoffset
始まるにbuffer
格納します。 ストリーム内の現在の位置は、読み取られたバイト数だけ進みます。ただし、例外が発生した場合、ストリーム内の現在の位置は変更されません。 実装は、読み取られたバイト数を返します。 0 バイトを超えるバイトが要求された場合、少なくとも 1 バイトのデータを読み取ることができるまで、実装は操作を完了しません (0 バイトが要求された場合でも少なくとも 1 バイトが使用可能になるまで、一部の実装も同様に完了しない場合がありますが、このような場合はストリームからデータが消費されません)。 Read は、0 バイトが要求された場合、またはストリームにこれ以上データがなく、それ以上必要ない場合 (閉じたソケットやファイルの終わりなど) にのみ 0 を返します。 実装は、ストリームの末尾に達していない場合でも、要求されたバイト数よりも少ないバイト数を自由に返します。
プリミティブ データ型の読み取りに使用 BinaryReader します。
こちらもご覧ください
適用対象
.NET