3

如何在 C# 中将 3D 字符串数组存储和恢复到文件中?你好; 我正在编写一个项目,我为公共数组创建了一个类,这样我就可以以各种形式使用它们。

类 MainArray

{

   // Introduce Moarefi Projeh

   public static string[] MPArray = new string[15];

   // Introduce Moarefi Personel Rozmozd

   public static string[,] MPRArray = new string[20,15];

   // Introduce Moarefi Peymankaran

   public static string[,] MPeymankaranArray = new string[20, 15];

   // Introduce Gozaresh PersonelRozMozd

   public static string[,] GPRMArray = new string[20, 15];

   
   public static string[,,] MArr = new string[20,20,20];

 

}

我以某种形式将所有数据保存在这些数组中。我想创建一个类,操作员可以在使用程序结束时将所有这些数组存储在一个文件中,并在下次使用程序开始时恢复这些数据。

你知道这是我第一次用 C# 编程,请给我一个类代码,我可以做到这一点。我想要一个类代码,我在我的主程序中使用一个简单的代码,如下所示: MyData.WriteArray(MyArrayName,FileName); 用于存储和 MyData.ReadArray(MyArrayName,FileName); 用于恢复。

4

2 回答 2

2

此代码会将 MyData 类型的对象保存到二进制文件:

using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

[Serializable()]
public class MyData
{
     private string[,,] SArr;

     public MyData(int sizex,int sizey,int sizez)
     {
        SArr = new string[sizex,sizey,sizez];
     }         
     public MyData(string[,,] data)
     {
        SArr = data;
     }         
     public string this[x,y,z]
     {
        get
        {
            return SArr[x,y,z];
        }
        set
        {
            SArr[x,y,z] = value;
        }
     }
     public void SaveToFile(String fileName)
     {
          Stream TestFileStream = File.Create(fileName);
          BinaryFormatter serializer = new BinaryFormatter();
          serializer.Serialize(TestFileStream, this);
          TestFileStream.Close();
     }

    public static MyData ReadFromFile(String fileName)
    {
        if (File.Exists(FileName))
        {
            Stream TestFileStream = File.OpenRead(FileName);
            BinaryFormatter deserializer = new BinaryFormatter();
            var data = (MyData)deserializer.Deserialize(TestFileStream);
            TestFileStream.Close();
            return data;
        }
        return null;
    }
}

在代码中:

var data = new MyData(4,4,4);
MyData[1,1,0] = "TestData";
data.SaveToFile(@"C:\Test.data");
var data2 = MyData.ReadFromFile(@"C:\Test.data");
//data2[1,1,0] == "TestData"
于 2013-01-12T10:27:46.137 回答
1

在保存之前,您需要序列化数组。是一个可以帮助您的链接。

于 2013-01-12T10:29:00.570 回答