xaml - Winrt StreamWriter & StorageFile 没有完全覆盖文件

标签 xaml visual-studio-2012 windows-runtime streamwriter

在这里快速搜索一无所获。因此,我已经开始使用一些相当迂回的方式在我的 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();
}

任何人都可以提供我可能遗漏的线索吗? WinRT 中缺少很多功能,因此没有真正遵循解决此问题的方法

最佳答案

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

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

关于xaml - Winrt StreamWriter & StorageFile 没有完全覆盖文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16425396/

相关文章:

c# - Windows 电话 8 : Media file access

c# - Windows RT 如何逐行读取文本文件?

windows-runtime - 仅使用 StreamReader/StreamWriter 在 WinRT 中读取/写入大型文本文件?

xaml - 当子控件变换出其父网格或边框时隐藏子控件

WPF应用启动问题

C#:选择当前事件文件

c# - 找不到类型或命名空间名称 'BundleCollection'(是否缺少 using 指令或程序集引用?)

c# - 工具提示的样式化文本 block 绑定(bind)改为绑定(bind)到控件模板

c# - Xaml C# 绑定(bind)数据仅在第一次有效

c++ - 在 C++ 中从 main() 调用的函数