2016-12-11 1 views
0

바이너리 포맷터를 사용하여 여러 객체를 파일로 직렬화하려고합니다.바이너리 포맷터를 사용하여 바이너리 파일 중간 읽기

파일이 너무 크므로 파일 중간에서 특정 개체가 필요한 경우 전체 파일을 직렬화 해제하지 않는 것이 좋습니다.

이 방법이 있습니까? 다른 시리얼 라이저를 사용 하시겠습니까?
또한 같은 위치에서 개체를 변경할 수 있습니까?

+1

파일을 BinaryFormatter로 만든 경우 중간에있는 개체를 읽는 방법이 없으며 해당 개체를 다시 쓰지 않아도됩니다. – rene

+0

다른 formmater를 알고 계십니까? 아니면 수동으로 구현해야합니까? –

+1

Sqlite와 같은 간단한 데이터베이스를 사용해보십시오. –

답변

1

TL; DR :

  • 당신이 뭔가를 구현하지 않는/결합하다 모든
  • 에서 파일을 압축 할 필요가 있는지 여부를 결정 자신
  • 사용 .NET의 ZipFile를 클래스

파일을 스트림으로 다시 열면 스트림의 Seek 메서드를 사용하여 원하는 위치 (어딘가에 기억해야하는)로 이동 한 다음 원하는 바이트 수를 읽을 수 있습니다. 또한 마커 비트를 사용하여 파일의 끝을 기억하거나 마크해야합니다. 파일을 수정하는 것도 아주 재미있을 것입니다.

하지 마세요! 당신은 나쁜 tar 동등한를 기록 할 것, 그리고 다른 많은 사람들이 이미 수행 한 더 나은 :

이 또한주의 .NET의 진 그 직렬화가 이후 .NET 버전에서 읽을 수있는 것은 아닙니다. 데이터 보관이 아닌 일시적인 작업을 의미합니다. 이것은 당신에게 중요 할 수 있으며 고려해야 할 또 다른 사항입니다.

파일을 어떻게 처리하는지 모르겠습니다. 그럴 필요가 없거나 필요가 없을 수도 있습니다. 디스크에 개별 파일로 저장하는 것이 좋습니다. 단일 파일로서의 압축/저장이 사실상 그렇다면, 외부 종속성이 없으므로 .NET의 ZipFile 클래스로 시작하는 것이 좋습니다.