我正在使用方法序列化和反序列化對象到二進制文件,我已經發現這裏在stackoverflow上描述和討論。其中包括以下鏈接:https://stackoverflow.com/questions/21080839/pulling-objects-from-binary-file-and-putting-in-listt序列化過程工作正常,當對象被追加到它上面時,我看到該文件正在增長,並且在使用反序列化讀取時,問題是我只得到第一次寫入時寫入的列表部分文件。檢索到的數據看起來是正確的,但是我不會讀取超出第一個「寫入」操作中列表中第一個數量的對象。這就像文件位置始終設置爲零。從二進制文件反序列化對象
是否可以以任何方式循環或控制讀取操作來強制讀取整個文件?
感謝您的意見對這個
雷神
class singleBlob
{
public Bitmap bmpIndividualFish;
public Int64 idNumber;
public float area;
public float areaRatio;
}
class writeToFile
{
public void write(List<singleBlob> listOfBlobs)
{
string dir = @"D:\temp";
string serFileName = Path.Combine(dir, "fIndividualFish.bin");
//serialize
using (Stream streamw = File.Open(serFileName, FileMode.Append))
{
var bformatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
bformatter.Serialize(streamw, listOfBlobs);
//streamw.Close();
}
}
public List<singleBlob> read()
{
string dir = @"D:\temp";
string serFileName = Path.Combine(dir, "fIndividualFish.bin");
//deserialize
using (Stream stream = File.Open(serFileName, FileMode.Open,FileAccess.Read))
{
var bformatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
List<singleBlob> listOfBlobs = (List<singleBlob>)bformatter.Deserialize(stream);
//stream.Close();
return listOfBlobs;
}
}
你應該把你自己當前的代碼放在問題中 – infixed