将Windows Store应用程序中的文件更改保存在所需目录中

时间:2014-03-03 20:45:59

标签: c# .net json windows-store-apps

使用c#,VS2013,windows store app

在简单程序中有一个文件,其中一些数据以JSON格式保存。我将尝试将新数据添加到此文件中,然后将其存储。

enter image description here

尝试使用下一个代码保存JSON文件:

string result = await JsonConvert.SerializeObjectAsync(groups);
//get file path
string pathOfFile = Path.GetDirectoryName(file.Path); //get path
StorageFolder folder = await StorageFolder.GetFolderFromPathAsync(pathOfFile); //create dir by path

StringBuilder builder = new StringBuilder();
builder.Append(folder.Path);
builder.Append("\\EventsData.json");

Uri uriToSave = new Uri(builder.ToString());
//create file
StorageFile fileToWrite = 
    await StorageFile.GetFileFromApplicationUriAsync(uriToSave);
using (IRandomAccessStream stream =
    await file.OpenAsync(FileAccessMode.ReadWrite))
{
    // write the JSON file
     using (DataWriter textWriter = new DataWriter(stream))
    {
        textWriter.WriteString(result);
          await textWriter.StoreAsync();
    }
}

但在执行代码StorageFile fileToWrite = await StorageFile.GetFileFromApplicationUriAsync(uriToSave);期间,异常System.ArgumentException

在debagging期间获得了下一个Uri

enter image description here

问题 - 为什么我有这样的例外,如果我错了 - 如何在所需目录中的Windows应用商店中保存文件?

同时查看MSDN sample for writing data to file,并使用教程中的代码但得到System.UnauthorizedAccessException

StorageFile sampleFile = await folder.CreateFileAsync("EventsData.json", CreationCollisionOption.ReplaceExisting);
await Windows.Storage.FileIO.WriteTextAsync(sampleFile, result);

为什么Access denied或我错过了什么?

1 个答案:

答案 0 :(得分:1)

未经用户明确许可,您无法写入安装目录。

以下是协议:

  • 首次启动时,检查本地数据文件夹(ApplicationDataContainer)中是否有文件,如果没有,请从安装目录中读取该文件。
  • 将文件的副本写入本地应用程序数据文件夹(查看ApplicationDataContainer上的指南以获取更多信息)
  • 自由编辑此文件。