我正在寻找一种方法将字符串文本附加到Windows应用商店应用中的文件。我已经尝试读取该文件,然后创建一个新文件来覆盖它,但Windows Store Apps C#不能像C一样工作,在创建具有相同名称的新文件时会覆盖旧文件。目前我的代码是打开旧文件,读取它的内容,删除它并创建一个新文件,其中包含我读过的内容以及我想要追加的内容。 我知道有更好的方法,但我似乎无法找到它。那么如何将文本附加到Windows应用商店应用程序(Windows RT)中已存在的文件?
编辑 -
我试过这个
var folder = Windows.ApplicationModel.Package.Current.InstalledLocation;
var file = await folder.GetFileAsync("feedlist.txt");
await Windows.Storage.FileIO.AppendTextAsync(file, s);
但我一直在System.UnauthorizedAccessException
根据MSDN,当文件是只读时发生这种情况(我用右键单击属性检查,它不是)并且如果我没有访问文件所需的权限
我该怎么办?
答案 0 :(得分:19)
您可以使用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");
查看File Access Sample了解更多示例。
答案 1 :(得分:1)
使用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<string> lines = new List<string>() { 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);
}