Windows Phone中FileIO,StreamReader以及StreamWriter類(僅針對文本文件)

之前提及到應用數據文件的種類和區別,那麼既然知道了如何獲取應用數據文件,那麼接下來自然是對文件和文件夾

的相關處理操作了。文件夾類對應的是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);
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章