Stream.Read 메서드

정의

오버로드

Read(Span<Byte>)

파생 클래스에서 재정의되면 현재 스트림에서 바이트의 시퀀스를 읽고, 읽은 바이트 수만큼 스트림 내에서 앞으로 이동합니다.When overridden in a derived class, reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

Read(Byte[], Int32, Int32)

파생 클래스에서 재정의되면 현재 스트림에서 바이트의 시퀀스를 읽고, 읽은 바이트 수만큼 스트림 내에서 앞으로 이동합니다.When overridden in a derived class, reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

Read(Span<Byte>)

파생 클래스에서 재정의되면 현재 스트림에서 바이트의 시퀀스를 읽고, 읽은 바이트 수만큼 스트림 내에서 앞으로 이동합니다.When overridden in a derived class, reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

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>

메모리 영역입니다.A region of memory. 이 메서드가 반환될 때 이 영역의 내용은 현재 소스에서 읽은 바이트로 대체됩니다.When this method returns, the contents of this region are replaced by the bytes read from the current source.

반환

Int32

버퍼로 읽어온 총 바이트 수입니다.The total number of bytes read into the buffer. 많은 바이트가 현재 사용 가능하지 않은 경우 버퍼에 할당된 바이트 수보다 작을 수 있으며 스트림의 끝에 도달하면 0이 됩니다.This can be less than the number of bytes allocated in the buffer if that many bytes are not currently available, or zero (0) if the end of the stream has been reached.

설명

CanRead현재 인스턴스에서 읽기를 지원 하는지 여부를 확인 하려면 속성을 사용 합니다.Use the CanRead property to determine whether the current instance supports reading. 메서드를 사용 ReadAsync 하 여 현재 스트림에서 비동기적으로 읽습니다.Use the ReadAsync method to read asynchronously from the current stream.

이 메서드의 구현은 buffer.Length 현재 스트림에서 최대 바이트를 읽고에 저장 buffer 합니다.Implementations of this method read a maximum of buffer.Length bytes from the current stream and store them in buffer. 스트림 내의 현재 위치는 읽은 바이트 수 만큼 이동 합니다. 그러나 예외가 발생 하면 스트림 내의 현재 위치는 변경 되지 않은 상태로 유지 됩니다.The current position within the stream is advanced by the number of bytes read; however, if an exception occurs, the current position within the stream remains unchanged. 구현은 읽은 바이트 수를 반환 합니다.Implementations return the number of bytes read. 데이터를 사용할 수 없는 경우에는 적어도 1 바이트의 데이터를 읽을 수 있을 때까지 구현이 차단 됩니다.The implementation will block until at least one byte of data can be read, in the event that no data is available. Read 는 스트림에 더 이상 데이터가 없고 더 이상 필요 하지 않은 경우 (예: 닫힌 소켓 또는 파일 끝)에만 0을 반환 합니다.Read returns 0 only when there is no more data in the stream and no more is expected (such as a closed socket or end of file). 구현은 스트림의 끝에 도달 하지 않은 경우에도 요청 된 것 보다 더 짧은 바이트를 반환할 수 있습니다.An implementation is free to return fewer bytes than requested even if the end of the stream has not been reached.

BinaryReader기본 데이터 형식을 읽는 데 사용 합니다.Use BinaryReader for reading primitive data types.

적용 대상

Read(Byte[], Int32, Int32)

파생 클래스에서 재정의되면 현재 스트림에서 바이트의 시퀀스를 읽고, 읽은 바이트 수만큼 스트림 내에서 앞으로 이동합니다.When overridden in a derived class, reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

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[]

바이트 배열입니다.An array of bytes. 이 메서드는 지정된 바이트 배열의 값이 offset과 (offset + count - 1) 사이에서 현재 원본으로부터 읽어온 바이트로 교체된 상태로 반환됩니다.When this method returns, the buffer contains the specified byte array with the values between offset and (offset + count - 1) replaced by the bytes read from the current source.

offset
Int32

현재 스트림에서 읽은 데이터를 저장하기 시작하는 buffer의 바이트 오프셋(0부터 시작)입니다.The zero-based byte offset in buffer at which to begin storing the data read from the current stream.

count
Int32

현재 스트림에서 읽을 최대 바이트 수입니다.The maximum number of bytes to be read from the current stream.

반환

Int32

버퍼로 읽어온 총 바이트 수입니다.The total number of bytes read into the buffer. 이 바이트 수는 현재 바이트가 충분하지 않은 경우 요청된 바이트 수보다 작을 수 있으며 스트림의 끝에 도달하면 0이 됩니다.This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached.

예외

offsetcount의 합계가 버퍼 길이보다 큽니다.The sum of offset and count is larger than the buffer length.

buffer이(가) null인 경우buffer is null.

offset 또는 count가 음수입니다.offset or count is negative.

I/O 오류가 발생했습니다.An I/O error occurs.

스트림이 읽기를 지원하지 않습니다.The stream does not support reading.

스트림이 닫힌 후에 메서드가 호출되었습니다.Methods were called after the stream was closed.

예제

다음 예제에서는를 사용 하 여 Read 데이터 블록을 읽는 방법을 보여 줍니다.The following example shows how to use Read to read a block of data.

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현재 인스턴스에서 읽기를 지원 하는지 여부를 확인 하려면 속성을 사용 합니다.Use the CanRead property to determine whether the current instance supports reading. 메서드를 사용 ReadAsync 하 여 현재 스트림에서 비동기적으로 읽습니다.Use the ReadAsync method to read asynchronously from the current stream.

이 메서드의 구현은 count 현재 스트림에서 최대 바이트를 읽고 buffer 시작 부분에 저장 offset 합니다.Implementations of this method read a maximum of count bytes from the current stream and store them in buffer beginning at offset. 스트림 내의 현재 위치는 읽은 바이트 수 만큼 이동 합니다. 그러나 예외가 발생 하면 스트림 내의 현재 위치는 변경 되지 않은 상태로 유지 됩니다.The current position within the stream is advanced by the number of bytes read; however, if an exception occurs, the current position within the stream remains unchanged. 구현은 읽은 바이트 수를 반환 합니다.Implementations return the number of bytes read. 데이터를 사용할 수 없는 경우에는 적어도 1 바이트의 데이터를 읽을 수 있을 때까지 구현이 차단 됩니다.The implementation will block until at least one byte of data can be read, in the event that no data is available. Read 는 스트림에 더 이상 데이터가 없고 더 이상 필요 하지 않은 경우 (예: 닫힌 소켓 또는 파일 끝)에만 0을 반환 합니다.Read returns 0 only when there is no more data in the stream and no more is expected (such as a closed socket or end of file). 구현은 스트림의 끝에 도달 하지 않은 경우에도 요청 된 것 보다 더 짧은 바이트를 반환할 수 있습니다.An implementation is free to return fewer bytes than requested even if the end of the stream has not been reached.

BinaryReader기본 데이터 형식을 읽는 데 사용 합니다.Use BinaryReader for reading primitive data types.

추가 정보

적용 대상