C#에서 BinaryWriter를 통해서 문자열을 Write할경우 앞부분에 Length가 자동 삽입되는 문제

2009. 6. 4. 17:48프로그래밍/C#

728x90
반응형
BinaryWriter를 통해서 문자열을 Write할경우 앞부분에 Length가 자동 삽입되는 문제가 있습니다. 경우에 따라서는 아주 편리하게 사용할수 있습니다. 하지만 앞부분의 길이는 1바이트에서 2바이트 가변적입니다. 따라서 내부적으로 규칙을 정하고 프로그래밍하는 경우에는 문제가 발생될 수있습니다. 프로그래머가 원하지 않은 방법일 경우에 말입니다.

문제 :
     bw.Write((String)STR.Trim()); //길이+STR형식으로 기록됩니다.

해결방법 :
     String FN = "파일이름";
     FileStream fs = new FileStream(FN, FileMode.CreateNew, FileAccess.Write);
     BinaryWriter bw = new BinaryWriter(fs, System.Text.Encoding.GetEncoding("ks_c_5601-1987"));

     int STR_LEN = GetStringLength(STR.Trim()); // 길이를 구합니다.
     bw.Write((byte)STR_LEN); // 길이를 입력해줍니다.
     byte[] temp = System.Text.Encoding.Default.GetBytes(STR.Trim());
     bw.Write(temp, 0, STR_LEN); // 문자열 내용을 입력해줍니다.




728x90
반응형