gpt4 book ai didi

windows-8 - 在 Windows 8 应用程序中保存 List 的最佳方法是什么
转载 作者:行者123 更新时间:2023-12-04 06:06:15 24 4
gpt4 key购买 nike

我有一个 List<class>数据的。我想在我的应用程序每次启动和退出时分别保存并检索它。相当于IsolatedStorage (WP7) 在 Windows 8 中。如何保存这些设置?

最佳答案

在 Windows 8 中,您必须使用 LocalFolder对于您的应用程序,您可以使用以下方法访问:

StorageFolder folder = ApplicationData.Current.LocalFolder;

然后使用以下方法引用保存在那里的文件:
var fileToGet = await folder.GetFileAsync("nameOfFile.fileType");

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

我的解决方案是将列表序列化为 XML 字符串,并将其存储在应用程序文件夹中。你应该能够适应我的方法:
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;
}
}

关于windows-8 - 在 Windows 8 应用程序中保存 List<Object> 的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12768796/

24 4 0