2013-02-24 48 views
3

我試圖附加到最新Windows Phone中的文件。問題是我試圖做一切異步,我不知道如何做到這一點。如何在Windows Phone 8中異步追加文件

private async void writeResult(double lat, double lng) 
    { 

     StorageFolder localFolder = ApplicationData.Current.LocalFolder; 
     StorageFile storageFile = await localFolder.CreateFileAsync("result.txt", CreationCollisionOption.OpenIfExists); 
     Stream writeStream = await storageFile.OpenStreamForWriteAsync(); 
     using (StreamWriter writer = new StreamWriter(writeStream)) 
     //using (StreamWriter sw = new StreamWriter("result.txt", true)) 
     { 
      { 
       await writer.WriteLineAsync(lat + "," + lng); 
       //await sw.WriteLineAsync(lat + "," + lng); 
       writer.Close(); 
       //sw.Close(); 
      } 
     } 
    } 

我有這個迄今爲止,其寫入文件不錯,我可以讀取它以後大同小異,但它寫了我有什麼,而不是在新的一行。已註釋的行顯示瞭如何在沒有WP7流的情況下進行操作,但是我也無法使其工作(真正的是append標誌),並且真的應該使用新的WP8方法。

任何意見讚賞

+1

嘗試使用Stream.Seek()將當前流位置設置爲流結束 – 2013-02-25 01:18:34

+1

工作感謝,添加作爲答案,我會接受 – Breadbin 2013-02-25 13:34:59

回答

0

我能夠使用的建議(Stream.Seek())由奧萊Nechytailo成功

0

我用這個代碼,工作對我來說

private async System.Threading.Tasks.Task WriteToFile() 
     { 
      // Get the text data from the textbox. 
      byte[] fileBytes = System.Text.Encoding.UTF8.GetBytes("Some Data to write\n".ToCharArray()); 

      // Get the local folder. 
      StorageFolder local = Windows.Storage.ApplicationData.Current.LocalFolder; 

      // Create a new folder name DataFolder. 
      var dataFolder = await local.CreateFolderAsync("DataFolder", 
       CreationCollisionOption.OpenIfExists); 

      // Create a new file named DataFile.txt. 
      var file = await dataFolder.CreateFileAsync("DataFile.txt", 
      CreationCollisionOption.OpenIfExists); 

      // Write the data from the textbox. 
      using (var s = await file.OpenStreamForWriteAsync()) 
      { 
       s.Seek(0, SeekOrigin.End); 
       s.Write(fileBytes, 0, fileBytes.Length); 
      } 

     } 
1

更簡單的方法:

await Windows.Storage.FileIO.AppendTextAsync(storageFile, "Hello");