英語で読む

次の方法で共有


Stream.Read メソッド

定義

オーバーロード

Read(Span<Byte>)

派生クラスによってオーバーライドされた場合は、現在のストリームからバイト シーケンスを読み取り、読み取ったバイト数の分だけストリームの位置を進めます。

Read(Byte[], Int32, Int32)

派生クラスによってオーバーライドされた場合は、現在のストリームからバイト シーケンスを読み取り、読み取ったバイト数の分だけストリームの位置を進めます。

Read(Span<Byte>)

ソース:
Stream.cs
ソース:
Stream.cs
ソース:
Stream.cs

派生クラスによってオーバーライドされた場合は、現在のストリームからバイト シーケンスを読み取り、読み取ったバイト数の分だけストリームの位置を進めます。

C#
public virtual int Read (Span<byte> buffer);

パラメーター

buffer
Span<Byte>

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

戻り値

バッファーに読み取られた合計バイト数。 現在使用できないバイト数が多い場合はバッファーのサイズより小さく、バッファーの長さが 0 またはストリームの末尾に達した場合は 0 を指定できます。

注釈

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

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

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

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Standard 2.1

Read(Byte[], Int32, Int32)

ソース:
Stream.cs
ソース:
Stream.cs
ソース:
Stream.cs

派生クラスによってオーバーライドされた場合は、現在のストリームからバイト シーケンスを読み取り、読み取ったバイト数の分だけストリームの位置を進めます。

C#
public abstract int Read (byte[] buffer, int offset, int count);

パラメーター

buffer
Byte[]

バイト配列。 このメソッドが戻るとき、指定したバイト配列の offset から (offset + count - 1) までの値が、現在のソースから読み取られたバイトに置き換えられます。

offset
Int32

現在のストリームから読み取ったデータの格納を開始する位置を示す buffer 内のバイト オフセット。インデックス番号は 0 から始まります。

count
Int32

現在のストリームから読み取る最大バイト数。

戻り値

バッファーに読み取られた合計バイト数。 この値は、そのバイト数が現在使用できない場合は要求されたバイト数より小さく、is が 0 またはストリームの末尾に達した場合 count は 0 を指定できます。

例外

offsetcount の合計が、バッファーの長さよりも大きいです。

buffernullです。

offset または count が負の値です。

I/O エラーが発生します。

ストリームは読み取りをサポートしません。

ストリームが閉じた後でメソッドが呼び出されました。

次の例は、 を使用 Read してデータ ブロックを読み取る方法を示しています。

C#
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);
    }
}

注釈

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

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

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

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0