C#将多维数组导出/写入文件(csv或其他)

时间:2011-10-12 15:27:24

标签: c# arrays xna xmlserializer multidimensional-array

您好设计一个程序,我只是想建议将multiDim数组写入文件。 我正在使用XNA,并且有一个带有Vector3(x,y,z)的多维数组。

有数十万甚至数百万的值,我希望能够将它们保存在文件中(保存游戏级别)。我对一个想法没有偏见,我只需要存储数据......就是这样!所有其他游戏数据,如玩家统计数据等,我正在使用XMLSerializer及其工作奇迹。

现在我正在使用xml序列化程序,并且已经知道你无法导出MultiDim阵列...这太令人沮丧(但我确信有充分的理由 - 希望如此)。我玩Jagged没有运气。

使用System.IO.File.WriteAllText然后快速重新启动,仅用于字符串... daahhh

基本上我认为我需要继续使用BinaryWrite方法,重新编写自己的序列化程序,甚至尝试运行sql server来托管大量数据......愚蠢的想法?请告诉我,你能否指出我的写作方向。因为我主要有一个web(php)背景,所以运行同步数据/级别数据的服务器的想法对我很有吸引力......但可能不适用于此。

感谢您的一切,

2 个答案:

答案 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是微不足道的。