【萬里征程——Windows App開發】檔案&資料——寫入與讀取
在前面 【萬里征程——Windows App開發】檔案&資料——讀取檔案/資料夾名我們簡單得獲取了檔名和資料夾名,很明顯沒有太大的意思對吧,這裡就來寫真正的檔案。而在 【萬里征程——Windows App開發】檔案&資料——檔案選取器中,已經能夠通過檔案選取器儲存和開啟檔案了,這裡是對儲存和讀取檔案的一些補充。
準備工作
在XAML中新增一個TextBlock用於顯示相關資訊,新增一個Button來使用它的Click事件,當然了,最後分別建立2個。
建立檔案和讀取檔案
1.例項化StorageFolder類
我們的檔案不可能讓其隨意儲存在計算機/手機中的任何一個地方,應該先確定它的資料夾,對吧?
在新的Windows 8中,微軟開啟了Windows上的App時代,下載的軟體再也不能隨意安裝到任何地方了,而是由作業系統統一放到一塊叫做“獨立儲存”的地方。這也是出於安全的考慮。用過Windows Phone 8的朋友應該更加清楚了。
那麼下面這行程式碼的LocalFolder究竟在哪裡呢?
StorageFolder folder = Windows.Storage.ApplicationData.Current.LocalFolder;
下圖中的檔案,就是我當前所寫的App。(補充一條哦,一開始我裝了Win8後,下載了一個遊戲,模擬類的,有金幣呀什麼的,後來我找到這個App的檔案,將資料改了之後金幣就嘩嘩的啦。當然了,對於其他單機而言這個完全不值一提,但App的資料,相信還有很多人沒有改過吧。)
那麼這張圖中的紅方框的資料夾就是LocalFolder啦,下面還有一個儲存漫遊檔案的資料夾。
不論是讀取檔案還是寫入檔案,都得先確定一個資料夾哦。
2.例項化StorageFile
確定了資料夾,就得確定檔案咯。對於建立檔案而言,執行以下程式碼。既然用到了非同步,在函式上加上async是必不可少的咯,這一點我們在前面講到過。後面的ReplaceExisting屬性是指的,如果該檔案(名)已經存在了,則替換它。
StorageFile file =
await folder.CreateFileAsync("New Document.txt", CreationCollisionOption.ReplaceExisting);
那麼對於讀取檔案呢,就直接讀取好啦。
StorageFile file = await folder.GetFileAsync("sample.txt");
3.建立和讀取檔案
將文字寫入檔案按照如下程式碼,將檔名和文字內容(字串)。
await FileIO.WriteTextAsync(file, "Write text to file.");
讀取檔案也是類似的。
string text = await FileIO.ReadTextAsync(file);
我們還可以將這個讀取的字串傳遞給前面定義的TextBlock來加以除錯。以下是完整的程式碼。
// 建立檔案
StorageFolder folder = Windows.Storage.ApplicationData.Current.LocalFolder;
StorageFile file = await folder.CreateFileAsync("New Document.txt", CreationCollisionOption.ReplaceExisting);
await FileIO.WriteTextAsync(file, "Write text to file.");
// 2 從文字讀取檔案
StorageFolder folder = Windows.Storage.ApplicationData.Current.LocalFolder;
StorageFile file = await folder.GetFileAsync("sample.txt");
string text = await Windows.Storage.FileIO.ReadTextAsync(file);
tBlockReadInfo.Text = text;
使用緩衝區將位元組寫入到檔案或從檔案讀取位元組
1.例項化StorageFolder類
同上。
2.例項化StorageFile
同上。
3.將位元組寫入到檔案
a.建立緩衝區
var buffer = Windows.Security.Cryptography.CryptographicBuffer.ConvertStringToBinary("There's buffer ...... ", Windows.Security.Cryptography.BinaryStringEncoding.Utf8);
b.將緩衝區中的位元組寫入到檔案
await Windows.Storage.FileIO.WriteBufferAsync(file, buffer);
4.從檔案讀取位元組
a.將檔案載入到緩衝區
var buffer = await Windows.Storage.FileIO.ReadBufferAsync(file);
b.例項化DataReader,讀取緩衝區
DataReader dataReader = Windows.Storage.Streams.DataReader.FromBuffer(buffer);
c.從DataReader物件中讀取字串
string text = dataReader.ReadString(buffer.Length);
使用流將文字寫入檔案或從檔案讀取文字
1.例項化StorageFolder類
同上。
2.例項化StorageFile
同上。
3.新建流,並非同步地將file開啟,使用可讀寫的方式
var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite);
4.將文字寫入到檔案
a.使用using
using (var writeStream= stream.GetOutputStreamAt(0))
{
......
}
b.(在using語句的花括號內)建立DataWriter物件,並呼叫DataWriter.WriteString方法,將文字寫入到writeStream中
DataWriter dataWriter = new DataWriter(writeStream);
dataWriter.WriteString("Stream is a good thing.");
c.將文字儲存到檔案中,並通過StoreAsync和FlushAsync方法儲存和關閉流
await dataWriter.StoreAsync();
await writeStream.FlushAsync();
5.從檔案讀取文字
a.獲取該流的size
var size = stream.Size;
b.使用using
using (var readStream = stream.GetOutputStreamAt(0))
{
......
}
c.(在using語句的花括號內)建立DataWriter物件,並呼叫LoadAsync方法,最後呼叫ReadString即可。最後還可以將資訊輸出到TextBlock中。
DataReader dataReader = new DataReader(readStream);
uint uintBytes = await dataReader.LoadAsync((uint)size);
string text = dataReader.ReadString(uintBytes);
tBlockReadInfo.Text = text;
感謝您的訪問,希望對您有所幫助。
歡迎大家關注或收藏、評論或點贊。
為使本文得到斧正和提問,轉載請註明出處:
http://blog.csdn.net/nomasp
相關文章
- 【萬里征程——Windows App開發】檔案&資料——讀取檔案/資料夾名WindowsAPP
- 【萬里征程——Windows App開發】檔案&資料——檔案選取器WindowsAPP
- 【萬里征程——Windows App開發】檔案&資料——獲取檔案屬性WindowsAPP
- 【萬里征程——Windows App開發】如何儲存、讀取、刪除應用資料WindowsAPP
- 【萬里征程——Windows App開發】如何在多個頁面間讀取/儲存檔案【草稿】WindowsAPP
- 【萬里征程——Windows App開發】動畫1WindowsAPP動畫
- 【萬里征程——Windows App開發】開發準備WindowsAPP
- 【萬里征程——Windows App開發】應用欄WindowsAPP
- 【萬里征程——Windows App開發】使用Toast通知WindowsAPPAST
- 【萬里征程——Windows App開發】ListView&GridView之新增資料WindowsAPPView
- 【萬里征程——Windows App開發】繪製圖形WindowsAPP
- 【萬里征程——Windows App開發】畫筆和影象WindowsAPP
- 【萬里征程——Windows App開發】補充:JSONWindowsAPPJSON
- 【萬里征程——Windows App開發】動態磁貼WindowsAPP
- 【萬里征程——Windows App開發】編輯文字及鍵盤輸入WindowsAPP
- 【萬里征程——Windows App開發】使用華麗麗的字型WindowsAPP
- 【萬里征程——Windows App開發】如何使用貼上板WindowsAPP
- 【萬里征程——Windows App開發】資料繫結——簡單示例、更改通知、資料轉換WindowsAPP
- 【萬里征程——Windows App開發】DatePicker&TimepickerWindowsAPP
- 【萬里征程——Windows App開發】ListView&GridView之分組WindowsAPPView
- 【萬里征程——Windows App開發】SemanticZoom檢視切換WindowsAPPOOM
- 【萬里征程——Windows App開發】控制元件大集合1WindowsAPP控制元件
- 【萬里征程——Windows App開發】控制元件大集合2WindowsAPP控制元件
- 【萬里征程——Windows App開發】在應用中整合搜尋WindowsAPP
- 【萬里征程——Windows App開發】DatePickerFlyout、TimePickerFlyout的使用WindowsAPP
- 【萬里征程——Windows App開發】頁面佈局和基本導航WindowsAPP
- 【萬里征程——Windows App開發】應用設定和應用幫助WindowsAPP
- 【萬里征程——Windows App開發】用浮出控制元件做預覽效果WindowsAPP控制元件
- 【萬里征程——Windows App開發】設定共享(共享源和共享目標)WindowsAPP
- 讀取檔案流並寫入檔案流
- python檔案建立、讀取和寫入Python
- 如何讀取和寫入JSON檔案JSON
- Python之檔案讀取和寫入Python
- python讀取並寫入mat檔案Python
- IO流-檔案的寫入和讀取
- 【MATLAB】讀取和寫入文字檔案Matlab
- matlab 資料檔案MAT的讀與寫Matlab
- Javascript寫入txt和讀取txt檔案示例JavaScript