2014-04-22 85 views
2

我有這樣一個奇怪的問題,追加線...我對Windows手機的開發相當新,但我在c sharp一段時間的程序。所以我試圖創建文件來保存用戶數據(簡單的行在txt文件中)。我用這個代碼:Windows phone 8追加行到文件

 byte[] filebytes = System.Text.Encoding.UTF8.GetBytes("blablablabla"); 
     StorageFolder local = Windows.Storage.ApplicationData.Current.LocalFolder; 
     var folder = await local.CreateFolderAsync("Data", CreationCollisionOption.OpenIfExists); 
     var file = await folder.CreateFileAsync("data.txt", CreationCollisionOption.OpenIfExists); 
     using (var s = await file.OpenStreamForWriteAsync()) 
     { 
      s.Write(filebytes, 0, filebytes.Length); 
     } 

寫入到文件,並

 StorageFolder local = Windows.Storage.ApplicationData.Current.LocalFolder; 
     if (local != null) 
     { 
      var folder = await local.GetFolderAsync("Data"); 
      var file = await folder.OpenStreamForReadAsync("data.txt"); 
      using (StreamReader sr = new StreamReader(file)) 
      { 
       string line; 
       while ((line = sr.ReadLine()) != null) 
       { 
        TextBlock.Text = line; 
       } 
      } 
     } 

從中讀出。我也嘗試了許多其他的可能性來讀/寫文件,但都以相同的結果結束 - 所有數據都丟失了,文件中只有最後一行。首先,我認爲這個問題將在這裏抵消s.Write(filebytes, 0, filebytes.Length);,但在其他方式,它是以其他方式,並沒有什麼幫助。現在我已經改進了代碼,它可以工作,但是讀取所有數據並立即寫入所有數據並不是解決方案。感謝您的任何建議。

回答

0

更換

s.Write(filebytes, 0, filebytes.Length); 

隨着

await writer.WriteLineAsync("new entry"); 
+0

你向我指出了正確的方式,謝謝,現在的作品:-) – mmaverikk

+0

@mmaverikk你能解釋一下什麼是正確的方法是,你發現?我猜你已經添加了某種作家......儘管如此,很難從費薩爾的回答中得知它的確切含義。 – ruffin

+0

很久以前,但我認爲,@Faisal是正確的,正在等待WriteLineAsync。我也試過它在真實的設備上,它工作得很好。所以這可能是解決方案。 – mmaverikk