将列表保存和检索到本地存储(Windows Phone 8.1 和 C#)
Saving and retrieving list to a local storage (Windows Phone 8.1 & C#)
根据你的建议,我在下面使用以下列表编写文件 class ** public class Feed
{
public 字符串标题{ 得到;放; }
public string SectionName { get;放; }
public 列出文章 { get;放; }
}**
public async Task<bool> WriteFileAsync<T>(string key, T value)
{
var file = await ApplicationData.Current.LocalFolder.CreateFileAsync(key, CreationCollisionOption.ReplaceExisting);
//serialize
using (MemoryStream ms = new MemoryStream())
{
try
{
var serailizer = new DataContractSerializer(value.GetType());
serailizer.WriteObject(ms, value);
ms.Position = 0;
StreamReader reader = new StreamReader(ms);
var content = reader.ReadToEnd();
await FileIO.WriteTextAsync(file, content);
return true;
}
catch (Exception e)
{
return false;
}
}
}
await WriteFileAsync("Article", feeds);
下面是读取保存文件的代码
public async Task<T> ReadFileAsync<T>(string key)
{
var file = await ApplicationData.Current.LocalFolder.GetFileAsync(key);
if (file == null)
return default(T);
var textContent = await FileIO.ReadTextAsync(file);
//Deserialize
using (StringReader reader = new StringReader(textContent))
{
using (XmlReader xmlReader = XmlReader.Create(reader))
{
var serializer = new DataContractSerializer(typeof(T));
T theObject = (T)serializer.ReadObject(xmlReader);
return theObject;
}
}
}
await ReadFileAsync<List<string>>("Article");
下面是我作为 textContent
阅读时得到的 XML 格式
<ArrayOfFeed xmlns="http://schemas.datacontract.org/2004/07/MMRevamp_2016.ViewModels" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><Feed><Articles><Article><Abstract>இலங்கையில் தொடர்ந்து பெய்துவரும் தென்மேற்கு பருவமழையின் விளைவாக தலைநகர் கொழும்பு உள்ளிட்ட பல பகுதிகள் வெள்ளக்காடாக காட்சி அளிக்கின்றன. அரநாயக பகுதியில் நேற்று பின்னிரவு ஏற்பட்ட நிலச்சரிவில் மூன்று கிராமங்கள் மண்ணில் புதைந்தன. இதில் சிக்கியவர்களில் 15 பேரின் பிரேதங்கள் மீட்கப்பட்டுள்ளன.</Abstract><ArticleDetail>கொழும்பு:
இலங்கையின் பல பகுதிகளில் கடந்த 15-ம் தேதியில் இருந்து பெய்துவரும் பரவலான மழையின் விளைவாக நாட்டின் பல பகுதிகள் வெள்ளக்காடாக காட்சியளிக்கின்றன. குறிப்பாக, கெகல்லே மாவட்டத்தில் தொடர்ந்து பெய்த அடைமழையின் விளைவாக வெள்ளத்தோடு சேர்ந்து நிலச்சரிவும் ஏற்பட்டுள்ளது.
இதனால் பாதிக்கப்பட்ட பகுதிகளில் இருந்து சுமார் ஒன்றரை லட்சம் மக்கள் பாதுகாப்பான பகுதிகளுக்கு அழைத்து செல்லப்பட்டு, நிவாரண முகாம்களில் தங்க வைக்கப்பட்டுள்ளனர். இதுதவிர தங்களது இருப்பிடத்துக்கு அருகாமையில் உள்ள கோயில் போன்ற பொது கட்டிடங்களில் ஆயிரக்கணக்கான மக்கள் தஞ்சம் அடைந்துள்ளனர்.
இந்நிலையில், இலங்கையின் மத்தியப் பகுதியில் தலைநகர் கொழும்புவில் இருந்து சுமார் 140 கிலோமீட்டர் தூரத்தில் உள்ள மலைப்பிரதேசமான அரநாயக பகுதியில் நேற்று பின்னிரவு ஏற்பட்ட நிலச்சரிவால் பாறைகள் உருண்டுவந்து அருகாமையில் உள்ள கிராமங்களின்மீது விழுந்தன. இதில் மூன்று கிராமங்களில் உள்ள வீடுகள் மண்ணுக்குள் புதைந்து விட்டதாகவும், அப்பகுதியில் தேசிய பேரிடர் மீட்புப் படையினர் மீட்பு நடவடிக்கைகளில் ஈடுபட்டு வருகின்றனர்.
இங்கு வசித்துவந்த 200-க்கும் மேற்பட்ட குடும்பங்கள் மண்ணுக்குள் புதைந்திருப்பதாக தெரியவந்துள்ள நிலையில் இன்றுகாலை நிலவரப்படி பலர் மீட்கப்பட்டுள்ளதாகவும். இதுவரை 15 பிரேதங்கள் கண்டெடுக்கப்பட்டுள்ளதாகவும் தேசிய பேரிடர் மீட்பு முகமையின் செய்தி தொடர்பாளர் பிரதீப் கோடிப்பள்ளி தெரிவித்துள்ளார்.
புத்தளம், தப்போவ தம்பபன்னிய கிராமத்தில் 70 குடும்பங்களைச் சேர்ந்த 205 பேர் வெள்ளத்தில் சிக்குண்டுள்ள நிலையில், அவர்களை மீட்கும் நடவடிக்கைகள் முப்படையினரின் துணையுடன் நடைபெற்று வருவதாகவும் அவர் கூறினார்.</ArticleDetail><HeadLine>இலங்கையில் பேயாட்டம் போடும் பெருமழை: மூன்று கிராமங்கள் நிலச்சரிவில்...</HeadLine><ImageURL>http://img.maalaimalar.com/Articles/2016/May/201605181203113714_landslide-buries-three-villages-in-sri-lanka-hundreds-of_SECVPF.gif</ImageURL><Title>இலங்கையில் தொடர்ந்து பெய்துவரும் தென்மேற்கு பருவமழையின் விளைவாக தலைநகர் கொழும்பு உள்ளிட்ட பல பகுதிகள் வெள்ளக்காடாக காட்சி அளிக்கின்றன. அரநாயக பகுதியில் நேற்று பின்னிரவு ஏற்பட்ட நிலச்சரிவில் மூன்று கிராமங்கள் மண்ணில் புதைந்தன. இதில் சிக்கியவர்களில் 15 பேரின் பிரேதங்கள் மீட்கப்பட்டுள்ளன.</Title></Article><Article><Abstract>கருவில் இருக்கும் குழந்தையின் பாலினத்தை கண்டறியும் சோதனை நடத்தியதாக டெல்லியில் 6 பேரை போலீசார் கைது செய்தனர்.</Abstract><ArticleDetail>புதுடெல்லி:
டெல்லியில் மத்திய மார்க்கெட் பகுதியில் உள்ள ஒரு தனியார் நோய் பரிசோதனை மையத்தில் (கிளினிக்) விதிமுறைகளை மீறி கர்ப்பிணி பெண்களுக்கு ஆண்-பெண் குழந்தைகளை கண்டறியும் பாலின சோதனை நடத்தப்படுவதாக பெண் சிசுக்கொலை தடுப்பு குழுவினருக்கு தகவல் கிடைத்தது.
அதன்பேரில் ஹரியானா மற்றும் டெல்லி பெண் சிசுக்கொலை தடுப்பு குழுவினர் இணைந்து சம்பவ இடத்துக்கு சென்றபோது அங்கு கர்ப்பிணி பெண்களுக்கு கருவில் இருக்கும் குழந்தையின் பாலினத்தை கண்டறியும் சோதனை நடத்தியது கண்டுபிடிக்கப்பட்டது.
இதையடுத்து பரிசோதனை மையத்தை நடத்தி வந்த டாக்டர் முத்ரேஜா மற்றும் 2 பேரை போலீசார் கைது செய்தனர். மேலும், பரிசோதனை மையத்திற்கு சோதனைக்காக சென்ற 2 கர்ப்பிணி பெண்கள் உள்பட 3 பேரையும் போலீசார் கைது செய்தனர். இதில் தலைமறைவான 2 பேரை தேடி வருகின்றனர்.</ArticleDetail><HeadLine>கருவில் இருக்கும் குழந்தை பற்றிய பாலின சோதனை: 6 பேர் கைது</HeadLine><ImageURL>http://img.maalaimalar.com/Articles/2016/Jun/201606200207249771_six-held-in-delhi-for-Gender-Prediction-Tests_SECVPF.gif</ImageURL><Title>கருவில் இருக்கும் குழந்தையின் பாலினத்தை கண்டறியும் சோதனை நடத்தியதாக டெல்லியில் 6 பேரை போலீசார் கைது செய்தனர்.</Title></Article></Articles><SectionName>TopNews</SectionName><Title>தலைப்புச்செய்திகள்</Title></Feed></ArrayOfFeed>
其中key为文件名,value为要存入文件的内容(列表)
public async Task<bool> WriteFileAsync<T>(string key,T value)
{
var file = await ApplicationData.Current.LocalFolder.CreateFileAsync(key, CreationCollisionOption.ReplaceExisting);
// serialize
using(MemoryStream ms = new MemoryStream())
{
try
{
var serializer = new DataContractSerializer(value.GetType());
serializer.WriteObject(ms, value);
ms.Position = 0;
StreamReader reader = new StreamReader(ms);
var content = reader.ReadToEnd();
await FileIO.WriteTextAsync(file, content);
return true;
}
catch (Exception e)
{
return false;
}
}
}
public async Task<T> ReadFileAsync<T>(string key)
{
var file = await ApplicationData.Current.LocalFolder.GetFileAsync(key);
if(file == null)
return default(T);
var textContent = await FileIO.ReadTextAsync(file);
// Deserialize
using (StringReader reader = new StringReader(textContent))
{
using (XmlReader xmlReader = XmlReader.Create(reader))
{
var serializer = new DataContractSerializer(typeof(T));
T theObject = (T)serializer.ReadObject(xmlReader);
return theObject;
}
}
// using (MemoryStream ms = new //MemoryStream(Encoding.Unicode.GetBytes(textContent)))
//{
// try
// {
// var serializer = new DataContractSerializer(typeof(T));
// return (T)serializer.ReadObject(ms);
//}
// catch (Exception e)
//{
//return default(T);
// }
//
}
}
您可以创建一个序列化程序 class 来执行此操作,如下所示:
using System.IO;
using System.Xml.Serialization;
public class Serializer
{
/// <summary>
/// Serialize an object to an XML string
/// </summary>
public string Serialize(object obj)
{
using (var sw = new StringWriter())
{
var serializer = new XmlSerializer(obj.GetType());
serializer.Serialize(sw, obj);
return sw.ToString();
}
}
/// <summary>
/// Deserialize an XML string to an object
/// </summary>
public T Deserialize<T>(string xml)
{
using (var sw = new StringReader(xml))
{
var serializer = new XmlSerializer(typeof(T));
return (T)serializer.Deserialize(sw);
}
}
}
然后您可以使用 class 序列化为 Xml 字符串并保存到存储:
List<Feed> feeds = new List<Feed>();
Feed feed1 = new Feed();
feed1.Title = "A Title";
feed1.SectionName = "Section name";
Feed feed2 = new Feed();
feed2.Title = "Another title";
feed2.SectionName = "Another section name";
feeds.Add(feed1);
feeds.Add(feed2);
//Serialize to Xml string
Serializer serializer = new Serializer();
string Xml = serializer.Serialize(feeds);
//Save to local storage
Windows.Storage.ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
localSettings.Values["Feeds"] = Xml;
要从存储中再次获取对象列表,请这样调用:
//Get the objects back from Storage
string XmlToDeserialize = localSettings.Values["Feeds"].ToString();
List<Feed> feedsFromStorage = serializer.Deserialize<List<Feed>>(XmlToDeserialize);
下面是列表class
public class Feed
{
public string Title { get; set; }
public string SectionName { get; set; }
public List<Article> Articles { get; set; }
public Object ArticlesList { get; set; }
}
在本地保存文件
public static async Task<bool> SaveSetting(string Key, Object value)
{
var ms = new MemoryStream();
DataContractSerializer serializer = new DataContractSerializer(value.GetType());
serializer.WriteObject(ms, value);
await ms.FlushAsync();
ms.Seek(0, SeekOrigin.Begin);
StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync(Key, CreationCollisionOption.ReplaceExisting);
using (Stream fileStream = await file.OpenStreamForWriteAsync())
{
await ms.CopyToAsync(fileStream);
await fileStream.FlushAsync();
}
return true;
}
正在从本地检索文件
public async static Task<Feed> ReadSetting<type>(string Key)
{
var rr = new Feed();
try
{
var ms = new MemoryStream();
DataContractSerializer serializer = new DataContractSerializer(typeof(type));
StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync(Key);
using (IInputStream inStream = await file.OpenSequentialReadAsync())
{
rr.ArticlesList = (type)serializer.ReadObject(inStream.AsStreamForRead());
}
}
catch (FileNotFoundException)
{
}
return rr;
}
它完美地检索了列表。
根据你的建议,我在下面使用以下列表编写文件 class ** public class Feed { public 字符串标题{ 得到;放; } public string SectionName { get;放; } public 列出文章 { get;放; } }**
public async Task<bool> WriteFileAsync<T>(string key, T value)
{
var file = await ApplicationData.Current.LocalFolder.CreateFileAsync(key, CreationCollisionOption.ReplaceExisting);
//serialize
using (MemoryStream ms = new MemoryStream())
{
try
{
var serailizer = new DataContractSerializer(value.GetType());
serailizer.WriteObject(ms, value);
ms.Position = 0;
StreamReader reader = new StreamReader(ms);
var content = reader.ReadToEnd();
await FileIO.WriteTextAsync(file, content);
return true;
}
catch (Exception e)
{
return false;
}
}
}
await WriteFileAsync("Article", feeds);
下面是读取保存文件的代码
public async Task<T> ReadFileAsync<T>(string key)
{
var file = await ApplicationData.Current.LocalFolder.GetFileAsync(key);
if (file == null)
return default(T);
var textContent = await FileIO.ReadTextAsync(file);
//Deserialize
using (StringReader reader = new StringReader(textContent))
{
using (XmlReader xmlReader = XmlReader.Create(reader))
{
var serializer = new DataContractSerializer(typeof(T));
T theObject = (T)serializer.ReadObject(xmlReader);
return theObject;
}
}
}
await ReadFileAsync<List<string>>("Article");
下面是我作为 textContent
阅读时得到的 XML 格式<ArrayOfFeed xmlns="http://schemas.datacontract.org/2004/07/MMRevamp_2016.ViewModels" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><Feed><Articles><Article><Abstract>இலங்கையில் தொடர்ந்து பெய்துவரும் தென்மேற்கு பருவமழையின் விளைவாக தலைநகர் கொழும்பு உள்ளிட்ட பல பகுதிகள் வெள்ளக்காடாக காட்சி அளிக்கின்றன. அரநாயக பகுதியில் நேற்று பின்னிரவு ஏற்பட்ட நிலச்சரிவில் மூன்று கிராமங்கள் மண்ணில் புதைந்தன. இதில் சிக்கியவர்களில் 15 பேரின் பிரேதங்கள் மீட்கப்பட்டுள்ளன.</Abstract><ArticleDetail>கொழும்பு:
இலங்கையின் பல பகுதிகளில் கடந்த 15-ம் தேதியில் இருந்து பெய்துவரும் பரவலான மழையின் விளைவாக நாட்டின் பல பகுதிகள் வெள்ளக்காடாக காட்சியளிக்கின்றன. குறிப்பாக, கெகல்லே மாவட்டத்தில் தொடர்ந்து பெய்த அடைமழையின் விளைவாக வெள்ளத்தோடு சேர்ந்து நிலச்சரிவும் ஏற்பட்டுள்ளது.
இதனால் பாதிக்கப்பட்ட பகுதிகளில் இருந்து சுமார் ஒன்றரை லட்சம் மக்கள் பாதுகாப்பான பகுதிகளுக்கு அழைத்து செல்லப்பட்டு, நிவாரண முகாம்களில் தங்க வைக்கப்பட்டுள்ளனர். இதுதவிர தங்களது இருப்பிடத்துக்கு அருகாமையில் உள்ள கோயில் போன்ற பொது கட்டிடங்களில் ஆயிரக்கணக்கான மக்கள் தஞ்சம் அடைந்துள்ளனர்.
இந்நிலையில், இலங்கையின் மத்தியப் பகுதியில் தலைநகர் கொழும்புவில் இருந்து சுமார் 140 கிலோமீட்டர் தூரத்தில் உள்ள மலைப்பிரதேசமான அரநாயக பகுதியில் நேற்று பின்னிரவு ஏற்பட்ட நிலச்சரிவால் பாறைகள் உருண்டுவந்து அருகாமையில் உள்ள கிராமங்களின்மீது விழுந்தன. இதில் மூன்று கிராமங்களில் உள்ள வீடுகள் மண்ணுக்குள் புதைந்து விட்டதாகவும், அப்பகுதியில் தேசிய பேரிடர் மீட்புப் படையினர் மீட்பு நடவடிக்கைகளில் ஈடுபட்டு வருகின்றனர்.
இங்கு வசித்துவந்த 200-க்கும் மேற்பட்ட குடும்பங்கள் மண்ணுக்குள் புதைந்திருப்பதாக தெரியவந்துள்ள நிலையில் இன்றுகாலை நிலவரப்படி பலர் மீட்கப்பட்டுள்ளதாகவும். இதுவரை 15 பிரேதங்கள் கண்டெடுக்கப்பட்டுள்ளதாகவும் தேசிய பேரிடர் மீட்பு முகமையின் செய்தி தொடர்பாளர் பிரதீப் கோடிப்பள்ளி தெரிவித்துள்ளார்.
புத்தளம், தப்போவ தம்பபன்னிய கிராமத்தில் 70 குடும்பங்களைச் சேர்ந்த 205 பேர் வெள்ளத்தில் சிக்குண்டுள்ள நிலையில், அவர்களை மீட்கும் நடவடிக்கைகள் முப்படையினரின் துணையுடன் நடைபெற்று வருவதாகவும் அவர் கூறினார்.</ArticleDetail><HeadLine>இலங்கையில் பேயாட்டம் போடும் பெருமழை: மூன்று கிராமங்கள் நிலச்சரிவில்...</HeadLine><ImageURL>http://img.maalaimalar.com/Articles/2016/May/201605181203113714_landslide-buries-three-villages-in-sri-lanka-hundreds-of_SECVPF.gif</ImageURL><Title>இலங்கையில் தொடர்ந்து பெய்துவரும் தென்மேற்கு பருவமழையின் விளைவாக தலைநகர் கொழும்பு உள்ளிட்ட பல பகுதிகள் வெள்ளக்காடாக காட்சி அளிக்கின்றன. அரநாயக பகுதியில் நேற்று பின்னிரவு ஏற்பட்ட நிலச்சரிவில் மூன்று கிராமங்கள் மண்ணில் புதைந்தன. இதில் சிக்கியவர்களில் 15 பேரின் பிரேதங்கள் மீட்கப்பட்டுள்ளன.</Title></Article><Article><Abstract>கருவில் இருக்கும் குழந்தையின் பாலினத்தை கண்டறியும் சோதனை நடத்தியதாக டெல்லியில் 6 பேரை போலீசார் கைது செய்தனர்.</Abstract><ArticleDetail>புதுடெல்லி:
டெல்லியில் மத்திய மார்க்கெட் பகுதியில் உள்ள ஒரு தனியார் நோய் பரிசோதனை மையத்தில் (கிளினிக்) விதிமுறைகளை மீறி கர்ப்பிணி பெண்களுக்கு ஆண்-பெண் குழந்தைகளை கண்டறியும் பாலின சோதனை நடத்தப்படுவதாக பெண் சிசுக்கொலை தடுப்பு குழுவினருக்கு தகவல் கிடைத்தது.
அதன்பேரில் ஹரியானா மற்றும் டெல்லி பெண் சிசுக்கொலை தடுப்பு குழுவினர் இணைந்து சம்பவ இடத்துக்கு சென்றபோது அங்கு கர்ப்பிணி பெண்களுக்கு கருவில் இருக்கும் குழந்தையின் பாலினத்தை கண்டறியும் சோதனை நடத்தியது கண்டுபிடிக்கப்பட்டது.
இதையடுத்து பரிசோதனை மையத்தை நடத்தி வந்த டாக்டர் முத்ரேஜா மற்றும் 2 பேரை போலீசார் கைது செய்தனர். மேலும், பரிசோதனை மையத்திற்கு சோதனைக்காக சென்ற 2 கர்ப்பிணி பெண்கள் உள்பட 3 பேரையும் போலீசார் கைது செய்தனர். இதில் தலைமறைவான 2 பேரை தேடி வருகின்றனர்.</ArticleDetail><HeadLine>கருவில் இருக்கும் குழந்தை பற்றிய பாலின சோதனை: 6 பேர் கைது</HeadLine><ImageURL>http://img.maalaimalar.com/Articles/2016/Jun/201606200207249771_six-held-in-delhi-for-Gender-Prediction-Tests_SECVPF.gif</ImageURL><Title>கருவில் இருக்கும் குழந்தையின் பாலினத்தை கண்டறியும் சோதனை நடத்தியதாக டெல்லியில் 6 பேரை போலீசார் கைது செய்தனர்.</Title></Article></Articles><SectionName>TopNews</SectionName><Title>தலைப்புச்செய்திகள்</Title></Feed></ArrayOfFeed>
其中key为文件名,value为要存入文件的内容(列表)
public async Task<bool> WriteFileAsync<T>(string key,T value)
{
var file = await ApplicationData.Current.LocalFolder.CreateFileAsync(key, CreationCollisionOption.ReplaceExisting);
// serialize
using(MemoryStream ms = new MemoryStream())
{
try
{
var serializer = new DataContractSerializer(value.GetType());
serializer.WriteObject(ms, value);
ms.Position = 0;
StreamReader reader = new StreamReader(ms);
var content = reader.ReadToEnd();
await FileIO.WriteTextAsync(file, content);
return true;
}
catch (Exception e)
{
return false;
}
}
}
public async Task<T> ReadFileAsync<T>(string key)
{
var file = await ApplicationData.Current.LocalFolder.GetFileAsync(key);
if(file == null)
return default(T);
var textContent = await FileIO.ReadTextAsync(file);
// Deserialize
using (StringReader reader = new StringReader(textContent))
{
using (XmlReader xmlReader = XmlReader.Create(reader))
{
var serializer = new DataContractSerializer(typeof(T));
T theObject = (T)serializer.ReadObject(xmlReader);
return theObject;
}
}
// using (MemoryStream ms = new //MemoryStream(Encoding.Unicode.GetBytes(textContent)))
//{
// try
// {
// var serializer = new DataContractSerializer(typeof(T));
// return (T)serializer.ReadObject(ms);
//}
// catch (Exception e)
//{
//return default(T);
// }
//
}
}
您可以创建一个序列化程序 class 来执行此操作,如下所示:
using System.IO;
using System.Xml.Serialization;
public class Serializer
{
/// <summary>
/// Serialize an object to an XML string
/// </summary>
public string Serialize(object obj)
{
using (var sw = new StringWriter())
{
var serializer = new XmlSerializer(obj.GetType());
serializer.Serialize(sw, obj);
return sw.ToString();
}
}
/// <summary>
/// Deserialize an XML string to an object
/// </summary>
public T Deserialize<T>(string xml)
{
using (var sw = new StringReader(xml))
{
var serializer = new XmlSerializer(typeof(T));
return (T)serializer.Deserialize(sw);
}
}
}
然后您可以使用 class 序列化为 Xml 字符串并保存到存储:
List<Feed> feeds = new List<Feed>();
Feed feed1 = new Feed();
feed1.Title = "A Title";
feed1.SectionName = "Section name";
Feed feed2 = new Feed();
feed2.Title = "Another title";
feed2.SectionName = "Another section name";
feeds.Add(feed1);
feeds.Add(feed2);
//Serialize to Xml string
Serializer serializer = new Serializer();
string Xml = serializer.Serialize(feeds);
//Save to local storage
Windows.Storage.ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
localSettings.Values["Feeds"] = Xml;
要从存储中再次获取对象列表,请这样调用:
//Get the objects back from Storage
string XmlToDeserialize = localSettings.Values["Feeds"].ToString();
List<Feed> feedsFromStorage = serializer.Deserialize<List<Feed>>(XmlToDeserialize);
下面是列表class
public class Feed
{
public string Title { get; set; }
public string SectionName { get; set; }
public List<Article> Articles { get; set; }
public Object ArticlesList { get; set; }
}
在本地保存文件
public static async Task<bool> SaveSetting(string Key, Object value)
{
var ms = new MemoryStream();
DataContractSerializer serializer = new DataContractSerializer(value.GetType());
serializer.WriteObject(ms, value);
await ms.FlushAsync();
ms.Seek(0, SeekOrigin.Begin);
StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync(Key, CreationCollisionOption.ReplaceExisting);
using (Stream fileStream = await file.OpenStreamForWriteAsync())
{
await ms.CopyToAsync(fileStream);
await fileStream.FlushAsync();
}
return true;
}
正在从本地检索文件
public async static Task<Feed> ReadSetting<type>(string Key)
{
var rr = new Feed();
try
{
var ms = new MemoryStream();
DataContractSerializer serializer = new DataContractSerializer(typeof(type));
StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync(Key);
using (IInputStream inStream = await file.OpenSequentialReadAsync())
{
rr.ArticlesList = (type)serializer.ReadObject(inStream.AsStreamForRead());
}
}
catch (FileNotFoundException)
{
}
return rr;
}
它完美地检索了列表。