Winrt StreamWriter和StorageFile没有完全覆盖文件

Ral*_*bit 3 xaml streamwriter windows-runtime visual-studio-2012

这里的快速搜索没有任何结果.所以,我已经开始使用一些相当迂回的方式在我的WinRT应用程序中使用StreamWriter.阅读效果很好,写作方式不同.我所看到的是,当我选择要写的文件时,如果我选择一个新文件则没问题.该文件按我的预期创建.如果我选择覆盖文件,则文件被覆盖到某一点,但是流停止写入的点,如果原始文件很大,则旧内容存在于我的新流写入的位置.

代码是这样的:

public async void WriteFile(StorageFile selectedFileToSave)
{
    // At this point, selectedFileToSave is from the Save File picker so can be a enw or existing file
    StreamWriter writeStream;
    Encoding enc = new UTF8Encoding();
    Stream dotNetStream;

    dotNetStream = await selectedFileToSave.OpenStreamForWriteAsync();
    StreamWriter writeStream = new StreamWriter(dotNetStream, enc);

    // Do writing here

    // Close
    writeStream.Write(Environment.NewLine);
    await writeStream.FlushAsync();
    await dotNetStream.FlushAsync();
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以提供我可能遗失的线索吗?WinRT中缺少许多功能,所以并没有真正按照这种方式来解决这个问题

Den*_*nis 5

或者,您可以SetLength在使用之前使用方法将流的长度设置为0 StreamWriter:

var stream = await file.OpenStreamForWriteAsync();
stream.SetLength(0);
using (var writer = new StreamWriter(stream))
{
    writer.Write(text);
}
Run Code Online (Sandbox Code Playgroud)