2013-02-24 2 views
3

J'essaie d'ajouter un fichier dans le dernier Windows Phone. Le problème est que j'essaie de tout faire de manière asynchrone et je ne sais pas comment le faire.Comment ajouter un fichier, de manière asynchrone dans 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(); 
      } 
     } 
    } 

J'ai jusqu'à présent ce qui écrit à l'amende de fichier et je peux le lire plus tard la même, mais il écrit sur ce que j'ai plutôt que sur une nouvelle ligne. Les lignes commentées montrent comment se passer du flux dans WP7, mais je ne peux pas le faire fonctionner (le vrai est le drapeau append) et devrait vraiment utiliser les nouvelles méthodes WP8 de toute façon.

Les commentaires appréciés

+1

essayez d'utiliser Stream.Seek() pour définir la position actuelle du flux à la fin d'un flux –

+1

a travaillé un traitement merci, ajouter comme réponse et je vais accepter – Breadbin

Répondre

0

J'ai pu utiliser la suggestion (Stream.Seek()) par Oleh Nechytailo avec succès

0

J'ai utilisé ce code, fonctionne pour moi

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

façon plus facile :

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