1

これはおそらく foreach ループで実行できます。ただし.. while / for も機能するはずです。クラス MyClass があり、MyClass の 100 個のオブジェクトを書き込むとします。逆シリアル化するときにファイルの最後で停止するにはどうすればよいですか? 前もって感謝します

FileStream inStr = new FileStream(@"file.dat", FileMode.Open);
BinaryFormatter bf = new BinaryFormatter();

MyClass myclass = new MyClass();

while (???) // What to put here? EOF / End of stream check
{
myclass = (MyClass)bf.Deserialize(inStr);
//...
}
4

3 に答える 3

5

リストを保存してロードしたい場合はMyClass、Listオブジェクトを保存してみませんか。

保存する

List<MyClass> list = new List<MyClass>();
// add to your list
FileStream stream = new FileStream(@"file.dat", FileMode.Create);
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, list);
stream.Close();

ロード

FileStream inStr = new FileStream(@"file.dat", FileMode.Open);
BinaryFormatter bf = new BinaryFormatter();
List<MyClass> list = bf.Deserialize(inStr) as List<MyClass>;
于 2012-11-05T17:35:02.663 に答える
0

よく使う

While(Stream.Peek != -1)
于 2012-11-05T17:34:17.710 に答える