次の方法で共有


Stream.Read メソッド

定義

オーバーロード

名前 説明
Read(Span<Byte>)

派生クラスでオーバーライドされると、現在のストリームからバイトシーケンスを読み取り、読み取られたバイト数だけストリーム内の位置を進めます。

Read(Byte[], Int32, Int32)

派生クラスでオーバーライドされると、現在のストリームからバイトシーケンスを読み取り、読み取られたバイト数だけストリーム内の位置を進めます。

Read(Span<Byte>)

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

パラメーター

buffer
Span<Byte>

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

戻り値

バッファーに読み込まれるバイトの合計数。 この値は、多数のバイトが現在使用できない場合はバッファーのサイズより小さくすることができます。バッファーの長さが 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
ソース:
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

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

戻り値

バッファーに読み込まれるバイトの合計数。 この値は、多数のバイトが現在使用できない場合は要求されたバイト数より小さくすることができます。また、 count が 0 であるか、ストリームの末尾に達した場合は 0 になります。

例外

offsetcountの合計がバッファー長を超えています。

buffernullです。

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

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

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

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

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

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

こちらもご覧ください

適用対象