之前提及到應用數據文件的種類和區別,那麼既然知道了如何獲取應用數據文件,那麼接下來自然是對文件和文件夾
的相關處理操作了。文件夾類對應的是StorageFolder類,文件類對應的是StorageFile類。至於文件夾和文件的相關
屬性和方法就不做說明了,MSDN上都有詳細的介紹,也就是新建,刪除,移動、取得,重命名等等這些操作,依據
名稱即可知道屬性和方法是怎樣的。重點是對文件的讀寫操作。
對文件的操作無外乎文件的讀寫操作:
可以使用StreamReader類、StreamWriter類以及FileIO類讀取和寫入文件的內容。a. FileIO類是專門爲IStorageFile類型的對象表示的讀取和寫入文件提供幫助器方法。此類是一個靜態類,需直接調
用其靜態的文件讀寫方法進行操作,分別爲FileIO.ReadTextAsync(file)和FileIO.WriteTextAsync(file)。
b. StreamReader類和StreamWriter類可以讀取和寫入標準文本文件的各行信息。默認編碼爲UTF-8。這邊要注意讀
取和寫入的是標準的文本文件,並不包括圖片等其他非文本文件。
兩者示例僞代碼如下:
FileIO類寫入文件:
//獲取本地文件夾根目錄
IStorageFolder local = ApplicationData.Current.LocalFolder;
//在文件夾中創建文件,如果文件已經存在則替換掉
IStorageFile storageFile = await local.CreateFileAsync(filename, CreationCollisionOption.ReplaceExisting);
//使用FileIO類將文件內容寫入文件
await FileIO.WriteTextAsync(storageFile, content);StreamReader類讀取文件:
IStorageFolder local = ApplicationData.Current.LocalFolder;
IStorageFile file = await local.GetFileAsync(filename);
//打開文件獲取文件的數據流
IRandomAccessStream accessStream = await file.OpenReadAsync();
//使用StreamReader讀取文件的內容,需要將IRandomAccessStream對象轉化成Stream對象來初始化
StreamReader對象
using (StreamReader streamReader = new
StreamReader(accessStream.AsStreamForRead((int)accessStream.Size)))
{content = streamReader.ReadToEnd();
}
除了上述兩種方法,還可以使用WindowsRuntimeStorageExtension類提供的實現IStorageFolder和IStorageFile
接口的類的使用方法來進行文件夾和文件的讀寫操作。
這些擴展方法包括OpenStreamForReadAsync和OpenStreamForWriteAsync方法,示例如下:
byte[] fileBytes = Encoding.UTF8.GetBytes(content,ToCharArray());
using(var s = await file.OpenStreamForWriteAsync()){
s.Write(fileBytes,0,fileBytes.Length);
}