2014-04-22 62 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