[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();
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();
================================================
FileAccess.Read去掉看看
FileStream output = new FileStream(FileName + ".mod", FileMode.Create, FileAccess.Read) 如果图方便就这样
FileStream output = File.Create(FileName + ".mod");
new FileStream(FileName + ".mod", FileMode.Create)
就可以了如果要设置FileAccess也要是
FileAccess.Write 怎么能是 Read
反序列才是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