2010-05-27 4 views
2

내 프로그램 외부에서 생성 된 이진 파일을 읽고 싶습니다. C#에서 이진 파일을 읽는 한 가지 분명한 방법은 파일을 나타내는 클래스를 정의한 다음 BinaryReader를 사용하고 Read * 메서드를 통해 파일을 읽은 다음 반환 값을 클래스 속성에 할당하는 것입니다.C#의 BinaryFormatter는 파일을 읽는 좋은 방법입니까?

내가 싫어하는 것은 파일을 읽는 코드를 직접 작성해야한다는 것입니다. 정의 된 구조는 파일 저장 방법을 나타냅니다. 나는 또한 읽을 때 정확한 순서를 지켜야한다.

주위를 조금 둘러 본 후에는 바이너리 형식으로 객체를 자동으로 직렬화 및 비 직렬화 할 수있는 BinaryFormatter를 발견했습니다. 한 가지 큰 이점은 추가 코드를 만들지 않고도 파일을 읽고 작성할 수 있다는 것입니다. 그러나이 접근 방식이 직렬화 된 .NET 개체가 아닌 다른 프로그램에서 만들어진 파일에 적합한 지 궁금합니다. 예를 들어 BMP와 같은 그래픽 형식 파일을 생각해보십시오. BinaryFormatter로 파일을 읽는 것이 좋을지 아니면 BinaryReader 및 BinaryWriter를 통해 수동으로 작성하고 쓰는 것이 더 낫습니까? 아니면 더 나은 다른 접근법이 있습니까? 저는 구체적인 예를 찾는 것이 아니라 단지 그것을 구현하는 가장 좋은 방법은 무엇인지 조언을 구하는 것입니다.

답변

2

BinaryFormatter 형식으로 완벽하게 매핑 된 외부 파일 형식을 찾으려면 매우 행운이 있어야합니다. BinaryFormatter는 데이터 자체뿐만 아니라 직렬화하는 유형/사물에 대한 정보를 분명히 추가하는 반면, "정상적인"이진 파일 형식은 일반적으로 "이 바이트가이 다음이 바이트가이"가됩니다.

나는 최근에 SWF 헤더를 읽으면서 이것을 읽었을 때 항상 파일 스트림을 사용하고 수동으로 처리/매핑했습니다.

관련 문제