2012-07-24 111 views
1

我在运行时将一些字符串值存储在数组列表中。当应用程序关闭时,我想将数组中的数据存储在另一个位置,以便在下次应用程序启动时打开并检索数据。有什么办法可以做到这一点?保存并恢复ArrayList中的值

+0

你真的不应该再使用'ArrayList'了。你应该使用'List ',以便你有一个强类型的集合。 – Servy 2012-07-24 17:11:06

回答

1

您可以使用来自/ ReadingWriting到文件或存储的值Windows注册表。 用于读/写文件使用:

StreamReader sr = new StreamReader(@"C:/store.dll"); //for reading 
StreamWriter sw = new StreamWriter(@"C:/store.dll"); //for writing 

这是基本的。下面是这两个伟大的文章:

  1. Reding from files
  2. Writing to files

我用这个存储的高分一个简单的游戏。 :)

Here是使用Windows注册表的一个很好的教程。

+1

为什么'.dll'? DLL是为图书馆,而不是数据。 – CodesInChaos 2012-07-24 17:02:49

+0

只是一个例子。它可以是任何类型的文件...:D – 2012-07-24 17:03:17

+0

是否有任何不同的,更“隔离”的方式来保存和恢复我的数据?我更喜欢不使用窗口注册表 – user1005633 2012-07-24 17:13:16

0

你可以Serialize的ArrayList和后来写入到磁盘,然后加载该文件,并Deserialize它的对象:

public static XDocument Serialize<T>(T objectIn, Type[] extraTypes) 
    { 
     try 
     { 
      var target = new XDocument(); 
      XmlSerializer s = extraTypes != null ? new XmlSerializer(objectIn.GetType(), extraTypes) : new XmlSerializer(objectIn.GetType()); 
      s = extraTypes != null 
       ? new XmlSerializer(objectIn.GetType(), extraTypes) 
       : new XmlSerializer(objectIn.GetType()); 

      var writer = target.CreateWriter(); 

      s.Serialize(writer, objectIn); 

      writer.Close(); 
      return target; 
     } 
     catch (Exception ex) 
     { 
      throw new Exception(string.Format("Could not serialize object: {0}", ex.Message)); 
     } 
    } 

    public static T Deserialize<T>(XDocument xDocument, string defaultNamespace) 
    { 
     XmlSerializer s = new XmlSerializer(typeof(T), defaultNamespace); 

     T result = (T)s.Deserialize(xDocument.CreateReader()); 

     return result; 
    } 
+0

我该如何称此方法?我想T对象是我的数组列表,什么是类型[] extraTypes – user1005633 2012-07-24 17:10:24