[C#] 바이너리 파일 쓰기/읽기

C#에서 바이너리 파일을 만드는 코드가 필요해 찾은 코드. 건망증으로 인하여.. 정리 차원에서 올려봅니다. 먼저 쓰는 것에 대한 코드를 정리해 보면…

FileStream fs = 
    new FileStream("D:/data.bin", FileMode.CreateNew, FileAccess.Write);
BinaryWriter bw = new BinaryWriter(fs);

int i = 100;
float f = 123.34f;
double d = 456789.1234;
string str = "cafe.naver.com/gisdev";

bw.Write(i);
bw.Write(f);
bw.Write(d);
bw.Write(str);

bw.Close();
fs.Close();

개인적으로 쓰는 데이터 타입에 대해 단 하나(Write) 매서드로 제공하지 말고.. 타입에 따라 제공해 줬다면 이해하기 쉬운 코드를 작성할 수 있지 않을까 생각됩니다. 예를 들어서 int 데이터 쓰기는 WriteInt, float 데이터 쓰기는 WriteSingle, double 데이터 쓰기는 WriteDouble, 문자열 쓰기는 WriteString로 말입니다.

그리고 아래는 위에서 만든 바이너리 파일에 대한 읽기에 대한 코드입니다.

FileStream fs = new FileStream("D:/data.bin", FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);

int i = br.ReadInt32();
float f = br.ReadSingle();
double d = br.ReadDouble();
string str = br.ReadString();

MessageBox.Show(i + " " + f + " " + d + " " + str);

br.Close();
fs.Close();

읽기에 대해서는 각 타입에 대해 읽기 매서드를 제공하고 있네요. 쓰기에 대한 방식과 읽기에 대한 방식을 이렇게 다르게 만든 이유가 뭘까요? 끝으로 String에 대한 저장은 문자열의 길이값을 저장하고 실제 문자열 데이터를 저장하는 형태입니다. 참고로 문자열의 길이가 256자 이내라면 문자열 길이값을 저장하기 위한 바이트 수는 1바이트만을 사용하고 그렇지 않으면 2바이트 이상(2바이트까지는 확인했고 3바이트 이상을 사용하는지는 확인해 보지 못했습니다)을 사용합니다. 참 똑똑한 놈지 않나…… 싶습니다.

구글의 안드로이드 폰, “넥서스 폰”

애플폰이 나오기 전에.. 애플폰이 출시만 되면 사려고 했지만.. 구글의 안드로이드폰의 국내 출시가 올해 초나 중반기에 나온다는 소식에 애플폰을 지르지 않았습니다. 아직까지는 국내의 출시 소식은 아니지만.. 어제인가.. 오늘 새벽인가.. 해외에서 넥서스 폰이 출시가 되었습니다. 하루 빨리 국내에서도 출시가 될 날만을 기다리는 사람으로써 이 넥서스 폰의 특징 몇가지를 뽑아 봅니다.

사용자 삽입 이미지

  • 최신 안드로이드 2.1 탑재
  • 폰의 가격면에서 매우 저렴(애플폰과 T옴니아에 비교할때)
  • 두께 11.5mm, 무게 130g 매우 가벼움
  • CPU 1GHz
  • AMOLED 3.7 인치, 해상도 480×800
  • 멀티 태스킹 지원(당연한 항목이지만 애플폰의 경우 않된다기에…)
  • 어플리케이션 시장으로 안드로이드 마켓이 존재(애플폰의 경우 애플 앱스토어가 있음)
  • 카메라 기능
  • 음성인식기능
  • GPS 기능
  • 후면의 두개의 마이크를 이용한 외부소음 차단
  • 구글맵과 구글어스 실행
  • 멀티 터치 기능 지원 하지 않음
  • 내장 메모리가 512MB로 애플폰과 T옴니아에 비교해 매우 작음