将文本附加到文件Windowsapp store应用(Windows RT)

我正在寻找一种方法将字符串文本附加到Windowsapp store应用程序中的文件。 我尝试读取该文件,然后创建一个新文件来覆盖它,但Windows Store Apps C#不能像C一样工作,当创建一个具有相同名称的新文件时会覆盖旧文件。 目前我的代码是打开旧文件,读取它的内容,删除它并创建一个新文件,其中包含我读过的内容以及我想要追加的内容。 我知道有更好的方法,但我似乎无法找到它。 那么我如何将文本附加到Windowsapp store应用程序(Windows RT)中已存在的文件?

编辑 –

我试过这个

var folder = Windows.ApplicationModel.Package.Current.InstalledLocation; var file = await folder.GetFileAsync("feedlist.txt"); await Windows.Storage.FileIO.AppendTextAsync(file, s); 

但是我继续根据MSDN得到System.UnauthorizedAccessException这种情况发生在文件是readonly时(我用右键单击属性检查,它不是),如果我没有访问文件的必要权限,我该怎么办?

您可以使用FileIO类附加到文件。 例如 …

 // Create a file in local storage var folder = ApplicationData.Current.LocalFolder; var file = await folder.CreateFileAsync("temp.txt", CreationCollisionOption.FailIfExists); // Write some content to the file await FileIO.WriteTextAsync(file, "some contents"); // Append additional content await FileIO.AppendTextAsync(file, "some more text"); 

有关更多示例,请查看文件访问示例。

使用FileIO.AppendTextAsync是一个不错的选择。 请找到此代码段。

  • 首先,它创建一个文件夹,如果不存在。 否则它将无法创建。

  • 然后它创建一个文件,如果不存在。

  • 最后将文本附加到文件中。

     public static async void WriteTrace(TraceEventType eventType, string msg, [CallerMemberName] string methodName = "") { const string TEXT_FILE_NAME = "Trace.txt"; string logMessage = eventType.ToString() + "\t" + methodName + "\t" + msg ; IEnumerable lines = new List() { logMessage }; StorageFolder localFolder = ApplicationData.Current.LocalFolder; StorageFolder tempFolder = ApplicationData.Current.TemporaryFolder; //if(localFolder.CreateFolderQuery(Windows.Storage.Search.CommonFolderQuery.) StorageFolder LogFolder = await localFolder.CreateFolderAsync("LogFiles", CreationCollisionOption.OpenIfExists); await LogFolder.CreateFileAsync(TEXT_FILE_NAME, CreationCollisionOption.OpenIfExists); StorageFile logFile = await LogFolder.GetFileAsync(TEXT_FILE_NAME); await FileIO.AppendLinesAsync(logFile, lines); }