FileIO.AppendTextAsync实际上正在覆盖

时间:2019-05-16 12:24:01

标签: c# file-io uwp

我正在使用FileIO将Json数据附加到LocalStorage文件中。

public static async Task AppendToJsonLocalStorage<T>(string filename, T objectToWrite) where T : new()
{
    StorageFolder localFolder = ApplicationData.Current.LocalFolder;

    StorageFile saveFile = await localFolder.CreateFileAsync(filename, CreationCollisionOption.ReplaceExisting);
    var contentsToWriteToFile = JsonConvert.SerializeObject(objectToWrite);
    await FileIO.AppendTextAsync(saveFile, contentsToWriteToFile);
}

AppendTextAsync应该只在现有文件的末尾添加新文本,对吗?

因为当我使用文本编辑器在文件浏览器中检查文件时,它始终会覆盖其中的先前文本。

1 个答案:

答案 0 :(得分:3)

在创建文件时,使用CreationCollisionOption.OpenIfExists代替CreationCollisionOption.ReplaceExisting

StorageFile saveFile = await localFolder.CreateFileAsync(filename, CreationCollisionOption.OpenIfExists);
var contentsToWriteToFile = JsonConvert.SerializeObject(objectToWrite);
await FileIO.AppendTextAsync(saveFile, contentsToWriteToFile);

ReplaceExisting会顾名思义替换任何现有文件。有关更多信息,请参阅docs