Winrt StreamWriter 和 StorageFile 未完全覆盖文件

2024-01-06

在这里快速搜索一无所获。因此,我开始使用一些相当迂回的方法在我的 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 中缺少很多功能,因此没有真正遵循解决此问题的方法


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

var stream = await file.OpenStreamForWriteAsync();
stream.SetLength(0);
using (var writer = new StreamWriter(stream))
{
    writer.Write(text);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Winrt StreamWriter 和 StorageFile 未完全覆盖文件 的相关文章

随机推荐