[Serializable]
private struct CompData
{
  public string CalSetting;
  public string BrickName;
  public int TotalBricks;
  public int CmpID;
  public int CmpIndx;
  public int BrickNo8; public int BrickNo9; public int BrickNo10; public int BrickNo11; public int BrickNo12; public int BrickNo13; public int BrickNo14;
 public double BrickData1; public double BrickData2; public double BrickData3; public double BrickData4; public double BrickData5; public double BrickData6; public double BrickData7; 
public svector StationData1; public svector StationData2; public svector StationData3; public svector StationData4; public svector StationData5; public svector StationData6; // svector 是 个 struct 我已经[Serializable]过了private CompData[] ModelBricks = new CompData[30];
我需要序列化在解序这个CompData 的一个数组ModelBricks, 其他编码我就省略了。请问是该用下面的那种方法,或者是两个方法都不对??
第一种:我用这种方法结果存储后没有出现我所存的"***.mod"文件
序列化:BinaryFormatter formatter = new BinaryFormatter();
 FileStream output = new FileStream(FileName + ".mod", FileMode.Create, FileAccess.Read)
formatter.Serialize(output, ModelBricks);
output.Close();
解序:BinaryFormatter reader = new BinaryFormatter();
FileStream input = new FileStream(FileName + ".mod",FileMode.Open,FileAccess.Read);CompData[] savedModelBricks =  reader.Deserialize(input) as CompData[];
????
第二种:这中方法是不是会把ModelBricks[0]到ModelBricks[28]的数据覆盖丢失最后只存了ModelBricks[29]????
序列化:
BinaryFormatter reader = new BinaryFormatter();
FileStream input = new FileStream(FileName + ".mod",FileMode.Open);

for(int i=0; i<=29; i++)
{
ModelBricks[i] = (CompData) reader.Deserialize(input);
}解序:
BinaryFormatter formatter = new BinaryFormatter();
FileStream output = new FileStream(FileName + ".mod",FileMode.Create);
for(int i=0; i<=29; i++)
{
formatter.Serialize(output, ModelBricks[i]);
}
output.Close();

解决方案 »

  1.   

    FileStream output = new FileStream(FileName + ".mod", FileMode.Create, FileAccess.Read) 
    ================================================
    FileAccess.Read去掉看看
      

  2.   

    设置的不对
    FileStream output = new FileStream(FileName + ".mod", FileMode.Create, FileAccess.Read) 如果图方便就这样
    FileStream output = File.Create(FileName + ".mod");
      

  3.   

    如果一定要这么写
    new FileStream(FileName + ".mod", FileMode.Create) 
    就可以了如果要设置FileAccess也要是
    FileAccess.Write 怎么能是 Read
    反序列才是read
      

  4.   

    不好意思这个 FileStream output = new FileStream(FileName + ".mod", FileMode.Create, FileAccess.Read) 
    应该是FileStream output = new FileStream(FileName + ".mod", FileMode.Create, FileAccess.Write) 
    请问去掉 FileMode.Create,  或 FileAccess.Write 有什么影响?
    还有我用第一种方法解序后,我在接着用ModelBricks的时候,举个例子:
    for(i=0; i<=Index-1; i++)
    {
    CompList[i] = ModelBricks[i].BrickName;

    }
    这样的时候就会显示错误:Error The name 'savedModelBricks' does not exist in the current context
      

  5.   

    第一种方法在反序列化以后你先看看ModelBricks 对不对