如何在Windows Phone 8中异步追加文件

3

我正在尝试在最新的Windows Phone上追加文件。问题是我想要全部异步处理,但不确定如何实现。

    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中没有使用流进行操作的方法,但是我无法使其工作(true是追加标志),并且应该使用新的WP8方法。

感谢您的任何评论


1
尝试使用Stream.Seek()将当前流位置设置为流的末尾。 - Oleh Nechytailo
1
非常好用,谢谢。请添加为答案,我会接受的。 - Breadbin
3个回答

1
更简单的方法:

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

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);
            }

        }

0

我成功地使用了 Oleh Nechytailo 的建议(Stream.Seek())


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接