您好设计一个程序,我只是想建议将multiDim数组写入文件。 我正在使用XNA,并且有一个带有Vector3(x,y,z)的多维数组。
有数十万甚至数百万的值,我希望能够将它们保存在文件中(保存游戏级别)。我对一个想法没有偏见,我只需要存储数据......就是这样!所有其他游戏数据,如玩家统计数据等,我正在使用XMLSerializer及其工作奇迹。
现在我正在使用xml序列化程序,并且已经知道你无法导出MultiDim阵列...这太令人沮丧(但我确信有充分的理由 - 希望如此)。我玩Jagged没有运气。
使用System.IO.File.WriteAllText然后快速重新启动,仅用于字符串... daahhh
基本上我认为我需要继续使用BinaryWrite方法,重新编写自己的序列化程序,甚至尝试运行sql server来托管大量数据......愚蠢的想法?请告诉我,你能否指出我的写作方向。因为我主要有一个web(php)背景,所以运行同步数据/级别数据的服务器的想法对我很有吸引力......但可能不适用于此。
感谢您的一切,
玛
答案 0 :(得分:1)
如果阵列中的对象是可序列化的(并且IIRC Vector3s是),您可以使用内置的.NET序列化器对序列进行序列化。
void SerializeVector3Array(string filename, Vector3[,] array)
{
BinaryFormatter bf = new BinaryFormatter();
Stream s = File.Open(filename, FileMode.Create);
bf.Serialize(s, array);
s.Close();
}
Vector3[,] DeserializeVector3Array(string filename)
{
Stream s = File.Open(filename, FileMode.Open);
BinaryFormatter bf = new BinaryFormatter();
Vector3[,] array = (Vector3[,])bf.Deserialize(s);
s.Close();
return array;
}
这应该是你所追求的一个粗略模板。
答案 1 :(得分:0)
为什么不试试Json Serialization? Json比XML具有更少的噪音,在写入文件时占用更少的空间,特别是如果你这样做而没有缩进等等。就我的经验而言,它没有数组,字典,日期和其他对象的麻烦。
我建议使用JSON.NET,如果没有,请查看this thread
如果Json.net发现难以序列化具有许多私有&的库类。静态变量,然后编写POCO类并将库类的基本属性映射到POCO并序列化和来回映射POCO是微不足道的。