標籤:des style blog io ar color os 使用 sp
一、檔案讀寫
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 + "\n"); }
二、使用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裡面的相關課程。
wp8.1 Study11:APP裡檔案讀寫和使用XML和Json序列化