C# BinaryReader 클래스란?
스트림(Stream)에서 이진(binary) 데이터를 읽어야 할 때는 C#의 BinaryReader 클래스를 사용하면 됩니다. BinaryReader는 기본 데이터 타입(double, string, int 등)을 이진 형식 그대로 손쉽게 읽어올 수 있도록 다양한 메서드를 제공합니다.
BinaryReader 클래스는 System.IO 네임스페이스에 포함되어 있으며, 사용하기 위해서는 해당 네임스페이스를 참조해야 합니다.
BinaryReader 주요 메서드
- ReadDouble(): 스트림에서 8바이트 부동 소수점 값을 읽습니다.
- ReadString(): 스트림에서 문자열을 읽습니다.
- ReadInt32(), ReadBoolean() 등: 각 데이터 타입에 맞는 값을 읽는 메서드가 제공됩니다.
BinaryWriter로 파일 쓰기 및 BinaryReader로 읽기 예제
아래 예제는 먼저 BinaryWriter를 사용해 파일에 이진 데이터를 쓰고, 이후 BinaryReader로 해당 파일을 읽는 과정을 보여줍니다.
static void WriteMe() {
using (BinaryWriter w = new BinaryWriter(File.Open("C:\\abc.txt", FileMode.Create))) {
w.Write(25.9);
w.Write("DEMO DATA");
}
}
static void ReadMe() {
using (BinaryReader r = new BinaryReader(File.Open("C:\\abc.txt", FileMode.Open))) {
Console.WriteLine("Value : " + r.ReadDouble());
Console.WriteLine("Value : " + r.ReadString());
}
}Main() 메서드에서 호출하기
위에서 작성한 두 메서드는 아래와 같이 Main() 메서드에서 호출할 수 있습니다.
static void Main(string[] args) {
WriteMe();
ReadMe();
Console.ReadKey();
}실행 결과
Value : 25.9 Value : DEMO DATA
정리
BinaryReader는 using 문과 함께 사용하는 것이 좋습니다. using 블록이 끝나면 리더가 자동으로 해제(dispose)되어 파일 핸들이 안전하게 닫히기 때문입니다. 또한 데이터를 쓴 순서와 동일한 순서로 읽어야 올바른 값을 얻을 수 있다는 점을 기억하세요.