2013-01-12 55 views
3

如何存儲和恢復3D字符串數組到C#中的文件? 嗨; 我正在編寫一個項目,爲公共數組創建一個類,以便我可以在所有表​​單中使用它們。如何存儲和恢復3D字符串數組到C#中的文件?

類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);恢復。

+1

你想要做的就是所謂的[序列化](http://msdn.microsoft.com/en-us/library/vstudio/ms233843.aspx)。保存文件的格式應該是什麼? Xml還是二進制? – semao

+0

我更喜歡二進制 –

回答

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" 
+0

嗨,感謝您的幫助 –

+0

嗨,感謝您的幫助。這正是我想要的鱈魚。但我不能使用它。我可以在哪裏定義數據並將其設置爲SArr並將其發送到此類。我怎樣才能捕捉我的數據,例如最後我想用這個cod:txtbox1 = SArr [1,1,1]; ? –

+0

我更新了答案,包括你需要的東西。但最簡單的方法是將SArr修飾符更改爲public(然後您可以像data.SArr = new string [4,4,4]那樣訪問它)。 – semao

1

節省您需要序列化前陣。 Here是一個可以幫助你的鏈接。

+0

抱歉,我無法做到這一點! –

相關問題