2009-10-27 4 views
2

내 앱을 닫을 때 300KB의 사전을 직렬화하려고했습니다. 디스크 공간이 없기 때문에 292KB 만 쓸 수 있습니다. 거기에있는 모든 요소를 ​​성공적으로 deserialize하는 방법이 있습니까?직렬화가 완료되지 않은 이진 직렬화 사전을 deserialize 또는 복구하는 방법?

저는 BinaryFormatter를 사용했고 일부 요소를 잃어 버리면 전체 사전을 잃는 것보다 낫습니다.

나는이 예외 얻을 직렬화하는 경우 : 정말 구현에 대한 많은 지식을 필요로 바이너리 스트림을 떨어져 따기

e.Message "The input stream is not a valid binary format. The starting contents (in bytes) are: 20-01-20-20-20-FF-FF-FF-FF-01-20-20-20-20-20-20-20 ..." 

답변

2

합니다. BinaryFormatter은 독점적이므로 데이터가 실제로 가치가 없다면 잃어 버렸다고 생각하는 것이 더 쌀 수도 있습니다. 당신은 scrobbling 많이 할 수 있지만, 쉽지 않을 것이며, dev 시간은 저렴하지 않습니다.

나는 그것을 말하고 있지 않다. 일 수 없다. FWIW, 나는 다른 시리얼 라이저를 위해 이것을 할 수있는 방법을 생각할 수있다. 단지 BinaryFormatter이 아니다.

+0

감사합니다. 당신은 scrobbling에 의하여 무엇을 의미합니까? 정규식을 사용하는 것과 같은 의미입니까? 내가 그들을 추출하고 정규식을 사용하여 새 파일에 추가 할 수있는 ASCII 형식으로 필요한 정보를 볼 수 있지만 신뢰할 수 있는지 확실하지 않은가요? 또한 독점적이라고 말하면 코드가 현명합니까? 리플렉터를 사용하여 어떻게했는지 알 수 있습니다. 또한 어떤 시리얼 라이저가이를 가능하게할까요? XML? (그들은 사전을 지원하지 않지만) –

+1

"scrobbling"이란 말은 난장판 일을 의미합니다. 예, 반사경을 사용할 수 있습니다. 그게 훨씬 쉬워지는지는 모르겠다. 대부분의 텍스트 형식은 쉽게자를 수 있습니다. 마찬가지로 오픈 포맷을 가지고있는 몇몇 바이너리. –

관련 문제