BufferedStream.Read 메서드

정의

오버로드

Read(Span<Byte>)

현재 버퍼링된 스트림에서 바이트 범위로 바이트를 복사하고 버퍼링된 스트림 내에서의 위치를 쓴 바이트 수만큼 이동합니다.Copies bytes from the current buffered stream to a byte span and advances the position within the buffered stream by the number of bytes read.

Read(Byte[], Int32, Int32)

현재 버퍼링된 스트림의 바이트를 배열에 복사합니다.Copies bytes from the current buffered stream to an array.

Read(Span<Byte>)

현재 버퍼링된 스트림에서 바이트 범위로 바이트를 복사하고 버퍼링된 스트림 내에서의 위치를 쓴 바이트 수만큼 이동합니다.Copies bytes from the current buffered stream to a byte span and advances the position within the buffered stream by the number of bytes read.

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

매개 변수

destination
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)

현재 버퍼링된 스트림의 바이트를 배열에 복사합니다.Copies bytes from the current buffered stream to an array.

public:
 override int Read(cli::array <System::Byte> ^ array, int offset, int count);
public override int Read (byte[] array, int offset, int count);
override this.Read : byte[] * int * int -> int
Public Overrides Function Read (array As Byte(), offset As Integer, count As Integer) As Integer

매개 변수

array
Byte[]

바이트를 복사해 넣을 버퍼입니다.The buffer to which bytes are to be copied.

offset
Int32

바이트를 읽기 시작하는 버퍼의 바이트 오프셋입니다.The byte offset in the buffer at which to begin reading bytes.

count
Int32

읽을 바이트 수입니다.The number of bytes to be read.

반환

Int32

array로 읽어온 총 바이트 수입니다.The total number of bytes read into array. 총 바이트 수는 요청된 바이트 수를 현재 사용할 수 없는 경우 이 바이트 수보다 작을 수 있으며 데이터를 읽기 전에 스트림의 끝에 도달한 경우에는 0이 됩니다.This can be less than the number of bytes requested if that many bytes are not currently available, or 0 if the end of the stream has been reached before any data can be read.

예외

array 길이에서 offset을 뺀 값이 count보다 작은 경우Length of array minus offset is less than count.

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

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

스트림이 열리지 않았거나 null인 경우The stream is not open or is null.

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

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

예제

이 코드 예제는에 대해 제공 된 큰 예제의 일부는 BufferedStream 클래스입니다.This code example is part of a larger example provided for the BufferedStream class.

// Receive data using the BufferedStream.
Console::WriteLine(  "Receiving data using BufferedStream." );
bytesReceived = 0;
startTime = DateTime::Now;
while ( bytesReceived < numberOfLoops * receivedData->Length )
{
   bytesReceived += bufStream->Read( receivedData, 0, receivedData->Length );
}

bufferedTime = (DateTime::Now - startTime).TotalSeconds;
Console::WriteLine( "{0} bytes received in {1} seconds.\n", bytesReceived.ToString(), bufferedTime.ToString(  "F1" ) );

// 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.
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을 반환 합니다.The Read method will return 0 only if the end of the stream is reached. 다른 모든 경우에는를 Read 반환 하기 전에에서 항상 적어도 1 바이트를 읽습니다.In all other cases, Read always reads at least one byte from the stream before returning. 정의에 따라에 대 한 호출 시 스트림에 데이터를 사용할 수 없는 경우이 Read Read 메서드는 0을 반환 합니다 (스트림의 끝에 자동으로 도달 함).By definition, if no data is available from the stream upon a call to Read, the Read method returns 0 (the end of the stream is reached automatically). 구현은 스트림의 끝에 도달 하지 않은 경우에도 요청 된 것 보다 더 짧은 바이트를 반환할 수 있습니다.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.

추가 정보

적용 대상