加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows-8 – 在Windows 8应用程序中保存List的最佳方法是什么

发布时间:2020-12-13 20:44:59 所属栏目:Windows 来源:网络整理
导读:我有一个List class数据的.我想保存它并在每次我的应用程序启动和退出时检索它.什么是Windows 8中的IsolatedStorage(WP7).如何保存这些设置? 在Windows 8中,您必须为您的应用程序使用LocalFolder,您可以使用以下方法访问: StorageFolder folder = Applicat
我有一个List< class>数据的.我想保存它并在每次我的应用程序启动和退出时检索它.什么是Windows 8中的IsolatedStorage(WP7).如何保存这些设置?
在Windows 8中,您必须为您的应用程序使用LocalFolder,您可以使用以下方法访问:
StorageFolder folder = ApplicationData.Current.LocalFolder;

然后使用以下参考文件保存在那里:

var fileToGet = await folder.GetFileAsync("nameOfFile.fileType");

我目前处于我正在处理的项目中的类似情况,我希望将自定义对象列表存储到我的Apps LocalFolder并稍后重新加载.

我的解决方案是将列表序列化为XML字符串,并将其存储在App文件夹中.你应该能够调整我的方法:

static public string SerializeListToXml(List<CustomObject> List)
    {
        try
        {
            XmlSerializer xmlIzer = new XmlSerializer(typeof(List<CustomObject>));
            var writer = new StringWriter();
            xmlIzer.Serialize(writer,List);
            System.Diagnostics.Debug.WriteLine(writer.ToString());
            return writer.ToString();
        }

        catch (Exception exc)
        {
            System.Diagnostics.Debug.WriteLine(exc);
            return String.Empty;
        }

现在您已经拥有了该字符串,您可以将其保存为文本文件并将其放在LocalStorage中:

//assuming you already have a list with data called myList
await Windows.Storage.FileIO.WriteTextAsync("xmlFile.txt",SerializeListToXml(myList));

现在,当您再次加载应用程序时,您可以使用上面提到的加载方法从LocalStorage获取xmlFile,然后对其进行反序列化以使List返回.

string listAsXml = await Windows.Storage.FileIO.ReadTextAsync(xmlFile.txt);
List<CustomObject> deserializedList = DeserializeXmlToList(listAsXml);

再次,根据您的需求进行调整:

public static List<CustomObject> DeserializeXmlToList(string listAsXml)
    {
        try
        {
            XmlSerializer xmlIzer = new XmlSerializer(typeof(List<CustomObject>));
            XmlReader xmlRead = XmlReader.Create(listAsXml);
            List<CustomObject> myList = new List<CustomObject>();
            myList = (xmlIzer.Deserialize(xmlRead)) as List<CustomObject>;
            return myList;
        }

        catch (Exception exc)
        {
            System.Diagnostics.Debug.WriteLine(exc);
            List<CustomObject> emptyList = new List<CustomObject>();
            return emptyList;
        }
    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读