2013-02-24 92 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"); 
相关问题