BinaryReader.Read BinaryReader.Read BinaryReader.Read BinaryReader.Read Method

정의

내부 스트림에서 바이트를 읽고 스트림의 현재 위치를 앞으로 이동합니다.Reads bytes from the underlying stream and advances the current position of the stream.

오버로드

Read() Read() Read() Read()

내부 스트림에서 문자를 읽고 사용된 Encoding과 스트림에서 읽어오는 특정 문자의 길이만큼 스트림의 현재 위치를 앞으로 이동합니다.Reads characters from the underlying stream and advances the current position of the stream in accordance with the Encoding used and the specific character being read from the stream.

Read(Span<Byte>) Read(Span<Byte>) Read(Span<Byte>) Read(Span<Byte>)
Read(Span<Char>) Read(Span<Char>) Read(Span<Char>) Read(Span<Char>)
Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32)

바이트 배열의 지정된 지점부터 스트림에서 지정된 바이트 수만큼 읽습니다.Reads the specified number of bytes from the stream, starting from a specified point in the byte array.

Read(Char[], Int32, Int32) Read(Char[], Int32, Int32) Read(Char[], Int32, Int32) Read(Char[], Int32, Int32)

문자 배열의 지정된 지점부터 스트림에서 지정된 문자 수만큼 읽습니다.Reads the specified number of characters from the stream, starting from a specified point in the character array.

Read() Read() Read() Read()

내부 스트림에서 문자를 읽고 사용된 Encoding과 스트림에서 읽어오는 특정 문자의 길이만큼 스트림의 현재 위치를 앞으로 이동합니다.Reads characters from the underlying stream and advances the current position of the stream in accordance with the Encoding used and the specific character being read from the stream.

public:
 virtual int Read();
public virtual int Read ();
abstract member Read : unit -> int
override this.Read : unit -> int
Public Overridable Function Read () As Integer

반환

입력 스트림의 다음 문자를 반환하고 현재 사용할 수 있는 문자가 없을 경우 -1을 반환합니다.The next character from the input stream, or -1 if no characters are currently available.

예외

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

예제

다음 예제에서는 메모리를 사용 하 여 백업 저장소로 데이터를 쓰고 읽는 방법을 보여 줍니다.The following example shows how to read and write data using memory as a backing store. 이 예제에서는 콘솔에 경로 문자는 잘못 된 파일의 목록을 표시합니다.This example displays a list of invalid file path characters to the console. 코드에서 모든 잘못 된 파일 경로 문자 목록을 표시 하려고 하지만 표시할 수 있는 문자 집합 내에 일부 문자를 포함 합니다.Although the code tries to display a list of all invalid file path characters, not all of the characters are within the displayable set of characters. 잘못 된 문자 목록 시스템에 따라 달라질 수 있으므로이 코드에 대 한 출력도 달라질 수 있습니다.Because the list of invalid characters can vary based on the system, output for this code may also vary.

using namespace System;
using namespace System::IO;
int main()
{
   int i;
   array<Char>^invalidPathChars = Path::InvalidPathChars;
   MemoryStream^ memStream = gcnew MemoryStream;
   BinaryWriter^ binWriter = gcnew BinaryWriter( memStream );
   
   // Write to memory.
   binWriter->Write( "Invalid file path characters are: " );
   for ( i = 0; i < invalidPathChars->Length; i++ )
   {
      binWriter->Write( invalidPathChars[ i ] );

   }
   
   // Create the reader using the same MemoryStream 
   // as used with the writer.
   BinaryReader^ binReader = gcnew BinaryReader( memStream );
   
   // Set Position to the beginning of the stream.
   binReader->BaseStream->Position = 0;
   
   // Read the data from memory and write it to the console.
   Console::Write( binReader->ReadString() );
   array<Char>^memoryData = gcnew array<Char>(memStream->Length - memStream->Position);
   for ( i = 0; i < memoryData->Length; i++ )
   {
      memoryData[ i ] = Convert::ToChar( binReader->Read() );

   }
   Console::WriteLine( memoryData );
}

using System;
using System.IO;

class BinaryRW
{
    static void Main()
    {
        int i = 0;
        char[] invalidPathChars = Path.InvalidPathChars;
        MemoryStream memStream = new MemoryStream();
        BinaryWriter binWriter = new BinaryWriter(memStream);

        // Write to memory.
        binWriter.Write("Invalid file path characters are: ");
        for(i = 0; i < invalidPathChars.Length; i++)
        {
            binWriter.Write(invalidPathChars[i]);
        }

        // Create the reader using the same MemoryStream 
        // as used with the writer.
        BinaryReader binReader = new BinaryReader(memStream);

        // Set Position to the beginning of the stream.
        memStream.Position = 0;

        // Read the data from memory and write it to the console.
        Console.Write(binReader.ReadString());
        char[] memoryData = 
            new char[memStream.Length - memStream.Position];
        for(i = 0; i < memoryData.Length; i++)
        {
            memoryData[i] = Convert.ToChar(binReader.Read());
        }
        Console.WriteLine(memoryData);
    }
}
Imports System
Imports System.IO

Public Class BinaryRW

    Shared Sub Main()
    
        Dim i As Integer = 0
        Dim invalidPathChars() As Char = Path.InvalidPathChars
        Dim memStream As new MemoryStream()
        Dim binWriter As New BinaryWriter(memStream)

        ' Write to memory.
        binWriter.Write("Invalid file path characters are: ")
        For i = 0 To invalidPathChars.Length - 1
            binWriter.Write(invalidPathChars(i))
        Next i

        ' Create the reader using the same MemoryStream 
        ' as used with the writer.
        Dim binReader As New BinaryReader(memStream)

        ' Set Position to the beginning of the stream.
        memStream.Position = 0

        ' Read the data from memory and write it to the console.
        Console.Write(binReader.ReadString())
        Dim memoryData( _
            CInt(memStream.Length - memStream.Position) - 1) As Char
        For i = 0 To memoryData.Length - 1
            memoryData(i) = Convert.ToChar(binReader.Read())
        Next i
        Console.WriteLine(memoryData)
    
	End Sub
End Class

설명

BinaryReader 읽기에 실패 한 후에 파일 위치를 복원 하지 않습니다.BinaryReader does not restore the file position after an unsuccessful read.

공통적인 I/O 작업의 목록을 참조 하세요 공통적인 I/O 작업합니다.For a list of common I/O tasks, see Common I/O Tasks.

추가 정보

Read(Span<Byte>) Read(Span<Byte>) Read(Span<Byte>) Read(Span<Byte>)

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>

반환

Read(Span<Char>) Read(Span<Char>) Read(Span<Char>) Read(Span<Char>)

public:
 virtual int Read(Span<char> buffer);
public virtual int Read (Span<char> buffer);
abstract member Read : Span<char> -> int
override this.Read : Span<char> -> int
Public Overridable Function Read (buffer As Span(Of Char)) As Integer

매개 변수

buffer
Span<Char>

반환

Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32)

바이트 배열의 지정된 지점부터 스트림에서 지정된 바이트 수만큼 읽습니다.Reads the specified number of bytes from the stream, starting from a specified point in the byte array.

public:
 virtual int Read(cli::array <System::Byte> ^ buffer, int index, int count);
public virtual int Read (byte[] buffer, int index, int count);
abstract member Read : byte[] * int * int -> int
override this.Read : byte[] * int * int -> int
Public Overridable Function Read (buffer As Byte(), index As Integer, count As Integer) As Integer

매개 변수

buffer
Byte[]

데이터를 읽어올 버퍼입니다.The buffer to read data into.

index
Int32 Int32 Int32 Int32

버퍼로 읽어오기를 시작할 버퍼의 시작 위치입니다.The starting point in the buffer at which to begin reading into the buffer.

count
Int32 Int32 Int32 Int32

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

반환

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

예외

버퍼 길이에서 index를 빼면 count보다 작습니다.The buffer length minus index is less than count.

또는-or- 읽을 수 있도록 디코딩된 문자의 수는 count보다 큽니다.The number of decoded characters to read is greater than count. 유니코드 디코더가 대체 문자 또는 서로게이트 쌍을 반환하는 경우 이 문제가 발생할 수 있습니다.This can happen if a Unicode decoder returns fallback characters or a surrogate pair.

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

예제

다음 예제에서는 이진 데이터를 백업 저장소로 메모리를 사용 하 여 작성 하는 방법을 보여 줍니다.The following example shows how to write binary data by using memory as a backing store. 데이터를 올바르게 작성 하는지 여부를 나타내는 콘솔에 메시지를 표시 합니다.It displays a message to the console that indicates whether the data was written correctly.

using System;
using System.IO;

namespace BinaryRW
{
    class Program
    {
        static void Main(string[] args)
        {
            const int arrayLength = 1000;
            byte[] dataArray = new byte[arrayLength];
            byte[] verifyArray = new byte[arrayLength];

            new Random().NextBytes(dataArray);

            using (BinaryWriter binWriter = new BinaryWriter(new MemoryStream()))
            {
                Console.WriteLine("Writing the data.");
                binWriter.Write(dataArray, 0, arrayLength);

                using (BinaryReader binReader = new BinaryReader(binWriter.BaseStream))
                {
                    binReader.BaseStream.Position = 0;
                    
                    if (binReader.Read(verifyArray, 0, arrayLength) != arrayLength)
                    {
                        Console.WriteLine("Error writing the data.");
                        return;
                    }
                }
            }

            for (int i = 0; i < arrayLength; i++)
            {
                if (verifyArray[i] != dataArray[i])
                {
                    Console.WriteLine("Error writing the data.");
                    return;
                }
            }

            Console.WriteLine("The data was written and verified.");
        }
    }
}
Imports System.IO

Module Module1

    Sub Main()
        Const upperBound As Integer = 1000
        Dim dataArray(upperBound) As Byte
        Dim verifyArray(upperBound) As Byte

        Dim randomGenerator As New Random
        randomGenerator.NextBytes(dataArray)

        Using binWriter As New BinaryWriter(New MemoryStream())
            Console.WriteLine("Writing the data.")
            binWriter.Write(dataArray, 0, dataArray.Length)

            Using binReader As New BinaryReader(binWriter.BaseStream)
                binReader.BaseStream.Position = 0

                If binReader.Read(verifyArray, 0, dataArray.Length) <> dataArray.Length Then
                    Console.WriteLine("Error writing the data.")
                    Return
                End If
            End Using
        End Using

        For i As Integer = 0 To upperBound
            If verifyArray(i) <> dataArray(i) Then
                Console.WriteLine("Error writing the data.")
                Return
            End If
        Next i

        Console.WriteLine("The data was written and verified.")
    End Sub

End Module

이 예제에서는 파일의 내용을 읽고 16 열 형식으로 각 바이트의 숫자 값을 표시 합니다.This example reads the contents of a file and displays each byte's numeric value in 16-column format. 읽는 중인 파일의 끝에서 검색 된 때를 Read 메서드 0 바이트를 반환 합니다.The end of the file that is being read is detected when the Read method returns zero bytes.

using System;
using System.IO;
using System.Text;

public class DumpFileSample
{
    private static readonly int CHUNK_SIZE = 1024;
    public static void Main(String[] args)
    {
        if ((args.Length == 0) || !File.Exists(args[0]))
        {
            Console.WriteLine("Please provide an existing file name.");
        }
        else
        {
            using (FileStream fs = new FileStream(args[0], FileMode.Open, FileAccess.Read))
            {
                using (BinaryReader br = new BinaryReader(fs, new ASCIIEncoding()))
                {
                    byte[] chunk;

                    chunk = br.ReadBytes(CHUNK_SIZE);
                    while(chunk.Length > 0)
                    {
                        DumpBytes(chunk, chunk.Length);
                        chunk = br.ReadBytes(CHUNK_SIZE);
                    }
                }
            }
        }
    }

    public static void DumpBytes(byte[] bdata, int len)
    {
        int i;
        int j = 0;
        char dchar;
        // 3 * 16 chars for hex display, 16 chars for text and 8 chars
        // for the 'gutter' int the middle.
        StringBuilder dumptext = new StringBuilder("        ", 16 * 4 + 8);
        for (i = 0; i < len; i++)
        {
            dumptext.Insert(j * 3, String.Format("{0:X2} ", (int)bdata[i]));
            dchar = (char)bdata[i];
            //' replace 'non-printable' chars with a '.'.
            if (Char.IsWhiteSpace(dchar) || Char.IsControl(dchar))
            {
                dchar = '.';
            }
            dumptext.Append(dchar);
            j++;
            if (j == 16)
            {
                Console.WriteLine(dumptext);
                dumptext.Length = 0;
                dumptext.Append("        ");
                j = 0;
            }
        }
        // display the remaining line
        if (j > 0)
        {
            for (i = j; i < 16; i++)
            {
                dumptext.Insert(j * 3, "   ");
            }
            Console.WriteLine(dumptext);
        }
    }
}
Imports System
Imports System.IO
Imports System.Text

Module Module1
    Private ReadOnly CHUNK_SIZE As Integer = 1024
    Public Sub Main(args() As String)
        If ((args.Length = 0) OrElse Not File.Exists(args(0))) Then
            Console.WriteLine("Please provide an existing file name.")
        Else
            Using fs As FileStream = New FileStream(args(0), FileMode.Open, FileAccess.Read)
                Using br As New BinaryReader(fs, New ASCIIEncoding())
                    Dim chunk(CHUNK_SIZE) As Byte
                    chunk = br.ReadBytes(CHUNK_SIZE)

                    While chunk.Length > 0
                        DumpBytes(chunk, chunk.Length)
                        chunk = br.ReadBytes(CHUNK_SIZE)
                    End While
                End Using
            End Using
        End If
    End Sub

    Public Sub DumpBytes(bdata() As Byte, len As Integer)
        Dim i As Integer
        Dim j As Integer = 0
        Dim dchar As Char
        ' 3 * 16 chars for hex display, 16 chars for text and 8 chars
        ' for the 'gutter' int the middle.
        Dim dumptext As New StringBuilder("        ", 16 * 4 + 8)
        For i = 0 To len - 1
            dumptext.Insert(j * 3, String.Format("{0:X2} ", CType(bdata(i), Integer)))
            dchar = Convert.ToChar(bdata(i))
            ' replace 'non-printable' chars with a '.'.
            If Char.IsWhiteSpace(dchar) Or Char.IsControl(dchar) Then
                dchar = "."
            End If
            dumptext.Append(dchar)
            j += 1
            If j = 16 Then
                Console.WriteLine(dumptext)
                dumptext.Length = 0
                dumptext.Append("        ")
                j = 0
            End If
        Next i
        ' display the remaining line
        If j > 0 Then
            ' add blank hex spots to align the 'gutter'.
            For i = j To 15
                dumptext.Insert(j * 3, "   ")
            Next i
            Console.WriteLine(dumptext)
        End If
    End Sub

End Module

설명

BinaryReader 읽기 작업에 실패 한 후에 파일 위치를 복원 하지 않습니다.BinaryReader does not restore the file position after an unsuccessful read operation.

공통적인 I/O 작업의 목록을 참조 하세요 공통적인 I/O 작업합니다.For a list of common I/O tasks, see Common I/O Tasks.

추가 정보

Read(Char[], Int32, Int32) Read(Char[], Int32, Int32) Read(Char[], Int32, Int32) Read(Char[], Int32, Int32)

문자 배열의 지정된 지점부터 스트림에서 지정된 문자 수만큼 읽습니다.Reads the specified number of characters from the stream, starting from a specified point in the character array.

public:
 virtual int Read(cli::array <char> ^ buffer, int index, int count);
public virtual int Read (char[] buffer, int index, int count);
abstract member Read : char[] * int * int -> int
override this.Read : char[] * int * int -> int
Public Overridable Function Read (buffer As Char(), index As Integer, count As Integer) As Integer

매개 변수

buffer
Char[]

데이터를 읽어올 버퍼입니다.The buffer to read data into.

index
Int32 Int32 Int32 Int32

버퍼로 읽어오기를 시작할 버퍼의 시작 위치입니다.The starting point in the buffer at which to begin reading into the buffer.

count
Int32 Int32 Int32 Int32

읽을 문자 수입니다.The number of characters to read.

반환

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

예외

버퍼 길이에서 index를 빼면 count보다 작습니다.The buffer length minus index is less than count.

또는-or- 읽을 수 있도록 디코딩된 문자의 수는 count보다 큽니다.The number of decoded characters to read is greater than count. 유니코드 디코더가 대체 문자 또는 서로게이트 쌍을 반환하는 경우 이 문제가 발생할 수 있습니다.This can happen if a Unicode decoder returns fallback characters or a surrogate pair.

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

예제

다음 예제에서는 메모리를 사용 하 여 백업 저장소로 데이터를 쓰고 읽는 방법을 보여 줍니다.The following example shows how to read and write data using memory as a backing store. 이 예제에서는 콘솔에 경로 문자는 잘못 된 파일의 목록을 표시합니다.This example displays a list of invalid file path characters to the console. 코드에서 모든 잘못 된 파일 경로 문자 목록을 표시 하려고 하지만 표시할 수 있는 문자 집합 내에 일부 문자를 포함 합니다.Although the code tries to display a list of all invalid file path characters, not all of the characters are within the displayable set of characters. 잘못 된 문자 목록 시스템에 따라 달라질 수 있으므로이 코드에 대 한 출력도 달라질 수 있습니다.Because the list of invalid characters can vary based on the system, output for this code may also vary.

using namespace System;
using namespace System::IO;
int main()
{
   array<Char>^invalidPathChars = Path::InvalidPathChars;
   MemoryStream^ memStream = gcnew MemoryStream;
   BinaryWriter^ binWriter = gcnew BinaryWriter( memStream );
   
   // Write to memory.
   binWriter->Write( "Invalid file path characters are: " );
   binWriter->Write( Path::InvalidPathChars, 0, Path::InvalidPathChars->Length );
   
   // Create the reader using the same MemoryStream 
   // as used with the writer.
   BinaryReader^ binReader = gcnew BinaryReader( memStream );
   
   // Set Position to the beginning of the stream.
   binReader->BaseStream->Position = 0;
   
   // Read the data from memory and write it to the console.
   Console::Write( binReader->ReadString() );
   int arraySize = (int)(memStream->Length - memStream->Position);
   array<Char>^memoryData = gcnew array<Char>(arraySize);
   binReader->Read( memoryData, 0, arraySize );
   Console::WriteLine( memoryData );
}

using System;
using System.IO;

class BinaryRW
{
    static void Main()
    {
        char[] invalidPathChars = Path.InvalidPathChars;
        MemoryStream memStream = new MemoryStream();
        BinaryWriter binWriter = new BinaryWriter(memStream);

        // Write to memory.
        binWriter.Write("Invalid file path characters are: ");
        binWriter.Write(
            Path.InvalidPathChars, 0, Path.InvalidPathChars.Length);

        // Create the reader using the same MemoryStream 
        // as used with the writer.
        BinaryReader binReader = new BinaryReader(memStream);

        // Set Position to the beginning of the stream.
        memStream.Position = 0;

        // Read the data from memory and write it to the console.
        Console.Write(binReader.ReadString());
        int arraySize = (int)(memStream.Length - memStream.Position);
        char[] memoryData = new char[arraySize];
        binReader.Read(memoryData, 0, arraySize);
        Console.WriteLine(memoryData);
    }
}
Imports System
Imports System.IO

Public Class BinaryRW

    Shared Sub Main()
    
        Dim invalidPathChars() As Char = Path.InvalidPathChars
        Dim memStream As new MemoryStream()
        Dim binWriter As New BinaryWriter(memStream)

        ' Write to memory.
        binWriter.Write("Invalid file path characters are: ")
        binWriter.Write(Path.InvalidPathChars, 0, _
            Path.InvalidPathChars.Length)

        ' Create the reader using the same MemoryStream 
        ' as used with the writer.
        Dim binReader As New BinaryReader(memStream)

        ' Set Position to the beginning of the stream.
        memStream.Position = 0

        ' Read the data from memory and write it to the console.
        Console.Write(binReader.ReadString())
        Dim upperBound As Integer = _
            CInt(memStream.Length - memStream.Position) - 1
        Dim memoryData(upperBound) As Char
        binReader.Read(memoryData, 0, upperBound)
        Console.WriteLine(memoryData)
    
	End Sub
End Class

설명

BinaryReader 읽기 작업에 실패 한 후에 파일 위치를 복원 하지 않습니다.BinaryReader does not restore the file position after an unsuccessful read operation.

공통적인 I/O 작업의 목록을 참조 하세요 공통적인 I/O 작업합니다.For a list of common I/O tasks, see Common I/O Tasks.

추가 정보

적용 대상