一、文件读写
1、基本操作(使用FileIO API)
这个方法在上一个stduy已经学过,那么贴出来复习下,代码如下:
private async void writeTextToLocalStorageFile(string filename, string text) { var fold = Windows.Storage.ApplicationData.Current.LocalFolder;//打开文件夹 StorageFile file = await fold.CreateFileAsync(filename, CreationCollisionOption.ReplaceExisting);//创建个文件 await FileIO.WriteTextAsync(file, text);//在文件里面写内容 } private async Task<string> readTextFromLocalStorage(string filename) { var fold = Windows.Storage.ApplicationData.Current.LocalFolder;//打开文件夹 StorageFile file = await fold.GetFileAsync(filename);//打开对应的文件 string result = await FileIO.ReadTextAsync(file);//读取文件里面的内容 return result; }
NOTE:所有的文件操作是异步
2、使用流(stream)操作
我们也可以创建一个流,利用它进行读取和写入操作。它可以被使用在所有的WinRT上。
进行写操作,代码如下:
StreamWriter writeStream = null; private async void openLocalStorageFile(string filename)//打开文件流 { if (writeStream != null) return; StorageFolder localFolder = Windows.Storage.ApplicationData.Current.LocalFolder; Stream baseStream = await localFolder.OpenStreamForWriteAsync(filename, CreationCollisionOption.OpenIfExists); writeStream = new StreamWriter(baseStream); } private async void closeLocalStorageFile()//关闭文件流 { if (writeStream == null) return; await writeStream.FlushAsync(); writeStream.Dispose(); writeStream = null; } private async void writeLine(string text)//写数据到文件流中 { await writeStream.WriteAsync(text + " "); }
二、使用XML、JSON 序列化(serializer)
通过之前的学习,我们已经很容易读写一些设置保存和文本,然而使用XML、JSON 序列化,我们也可以十分简单地存储对象。在Windows Phone上的序列化库,使我们非常容易储存结构化数据。应用程序可以序列化数据成XML或JSON格式,而且这些数据将被存储或转化为文本。
1、序列化规则
- XML序列化要求的对象必须有一个无参数的构造函数。
- 私有和静态成员将不会被保存。
- 如果你在应用程序更新时在相应的类中添加了成员,那么在恢复使用之前的类定义的序列化的数据文件时,应用程序将会出现错误。
2、使用JSON序列化
下面把一个Customers对象序列化了,把数据转化成了JSON文件保存。
写操作:
using (Stream stream = await notesFolder.OpenStreamForWriteAsync(filename, CreationCollisionOption.OpenIfExists)) { DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Customers)); serializer.WriteObject(stream, customers);
await stream.FlushAsync();
stream.Dispose();
}
读操作:
using (Stream stream = await notesFolder.OpenStreamForReadAsync(filename)) { DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Customers)); Customers result = serializer.ReadObject(stream) as Customers;
stream.Dispose();//释放数据流 }
3、使用XML序列化
操作与JSON序列化类似,下面代码如下:
写操作:
XmlSerializer serializer = new XmlSerializer(typeof(Customers)); serializer.Serialize(stream, customers);
读操作:
XmlSerializer serializer = new XmlSerializer(typeof(Customers)); Customers result = serializer.Deserialize(stream) as Customers;
知识学习分享~~~小白一个,以上资料基本是翻译channel9里面的相关课程。