0
我想要获取序列化对象的序列化和反序列化的数量。我想这样做,创建一个介于1和这个数量之间的随机值。获取流中的序列化对象的数量,以随机选择一个
这可能吗?
目前我的代码是:
Random rnd = new Random();
Stream stream = new FileStream("File.dat", FileMode.Open, FileAccess.Read, FileShare.Read);
int randomNumber = rnd.Next(1, (int)stream.Length);
然而,这是不行的,因为stream.Length
值大于1000,同时还有在文件中约3序列化对象。
我使用BinaryFormatter
来进行序列化。
编辑:我应该补充说,序列化到文件的对象是多维数组(int [,]),并且他们有一个与它们一起存储的数字。第一个对象有数字1,第二个有2等。 在此先感谢!
序列化对象的大小可能是可变的,所以不可能确定有多少个没有反序列化它们,除非在第一次序列化时将它们写入某处。但是,如果对象的大小是固定的(例如没有字符串),那么如果事先知道它们的序列化大小,则可以解决它 - 然后可以按每个对象的序列化大小来分割文件长度。 –
我怎么能做到这一点?这是一个非常好的主意,但我不确定如何去做。每当一个对象被序列化时,我正在考虑将值增加1,但是当应用程序/项目关闭并稍后再次打开时,值应该保持不变。 编辑:对象不是固定大小。 – Fluppe
是的,不幸的是,如果对象不是固定的大小,那么你将不得不反序列化它们并随机选择一个。 –