私のアプリケーションがファイルを更新している間に、マシンの電源が切られたと思います。電源を入れ直し、アプリケーションを起動すると、ファイルを逆シリアル化しようとしました。への呼び出しSerializer.Deserialize
は失敗しませんでしたが、結果のオブジェクトにはすべてのプロパティの既定値があります。
私のファイルの更新/保存:
using (FileStream theStream = File.Open(fileName + "_tmp", FileMode.Create)) {
ProtoBuf.Serializer.Serialize<MyObject>(theStream, inObjectToSerialize);
}
File.Copy(fileName + "_tmp", fileName, true);
_tmp ファイルはなく、メイン ファイルのみです。ファイルのサイズはゼロではないため、情報はそのままだと思います。このデータを回復する方法はありますか?
アップデート:
ProtoReader で Marc の提案を試してみましたが、問題のファイルによって例外がスローされreader.ReadFieldHeader()
ます。ProtoException の読み取り: 「ソース データの無効なフィールド: 0」