Aşağıdaki sorunla karşılaşıyorum. Diskteki tek bir dosyaya bir nesne akışı (ikili) (ikili) serialize etmem gerekiyor. Seri hale getirme kısmı bir sorun değildir, sadece ekleme modunda bir akış açın ve .Net'in BinaryFormatter Serialize yöntemini kullanın ve işiniz bitti. Bu yaklaşımdaki problem, bu akışı sadece BinaryFormatter'ın serileştirme işlevine verememektir, içerdiği şey serileştirdiğim nesnenin tek bir örneği değildir.İkili (De) 1 dosyaya bir nesne akışının serileştirilmesi
bu soruna ortak bir çözüm var mı? Belirli bir akışa serileştirilen tüm nesneler aynı tiptedir, bu yüzden en azından ne seri hale getirileceğine karar vermemize gerek yok, bu verilen bir şeydir, ama bu bana bir çıkış yolu önermez.
cevaplar dayalı Açıklama: büyük olması bekleniyor gönderilen nesne sayısı ve belleğe hepsini yüklemek için gerektirecektir diske flush (a sarıcı koleksiyonundaki hepsini tutmak için bu nedenle olanaksız olduğunu -> yenilerini ekleyin -> diske yıkayın). Tek bir nesne seri zaman
- Normalde içeren bir dosyayı almak:
Ne oluşturma içeren bir dosyadır
- [Nesne]:
[Nesne] [Object] [Object] [Object] ... [Nesne]
Ve ayrı Nesne örneklerini deserialize etmem gerekiyor.
Şimdiden teşekkürler!
Cevap:
while (fileStream.Position < fileStream.Length)
messages.Add((Message)formatter.Deserialize(fileStream));
BinaryFormatter bir nesne deserialize olacaktır: Cevap (yeterli açıklıkta) Bu Konuda ima, ancak açıkça belirtilmediği asla beri, ben burada ifade edeceğiz düşünce İstediğiniz gibi bir zamanda :) Dosyayı her çağırdığınızda uzunlukları yavaşlattığından, uzunlukları yavaşlattığından, fileStream.Length özelliğini önbelleğe almak isteyebilirsiniz. Bu soruyu göndermeden önce ilk kez denemediğim için hiçbir fikrim yok, ama şimdi kusursuz çalışıyor.
nesneler sisteminin ömrü süresince şekilde akmaktadır ve beklenen bunların çok büyük bir sayıdır , Yıkamalıyım.Bunları sarmalayıcı koleksiyonunda tuttuğumda, hepsini bellekte tutmalı ve diske yıkamak istediğim her zaman tüm dosyayı yeniden yazmam gerekecek. – United
ilk öneri işe yaramaz, başka bir kütüphaneye ihtiyaç duyduğu için (yasal olarak 6 aylık + onay süreci, eğer şanslıysam). İkincisi ilgi çekicidir. İkinci cevap için, koleksiyondaki nesneler olmaksızın bir dosyadan nesnelerin serisini serileştirmek için normal serileştirmeye sahip oldukları görülüyor. Çalışmamış olan testlerimde, sanırım daha fazla araştırmaya çalışacağım + belki de bu SO sorusunda takip edebilirim. – United