ここでクイック検索しても何も得られませんでした。そのため、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 には多くの機能が欠けているため、これを回避する方法を実際には踏襲していません。