2017-07-01 192 views
0

我试图将JSON文件保存在应用程序文件夹中,我能够从此文件读取数据,但我无法在此文件中写入数据。错误:试图将文件保存到UWP应用程序文件夹

data.json在文件属性中被标记为“内容”。

class Json 
{ 
    private string data; 
    private const string value1key = "value1"; 
    private const string value2key = "value2"; 
    private const string value3key = "value3"; 

    StorageFile file; 
    StorageFolder folder; 

    private void File() 
    { 
     folder = Windows.ApplicationModel.Package.Current.InstalledLocation.GetFolderAsync("Data").AsTask().ConfigureAwait(false).GetAwaiter().GetResult(); 
     //file = StorageFile.GetFileFromApplicationUriAsync(new Uri(@"ms-appx:///data.json")).AsTask().ConfigureAwait(false).GetAwaiter().GetResult(); 
     file = folder.GetFileAsync("data.json").AsTask().ConfigureAwait(false).GetAwaiter().GetResult(); 
    } 

    public Json() 
    { 
     File(); 
    } 

    public string Read() 
    { 
     return (FileIO.ReadTextAsync(file).AsTask().ConfigureAwait(false).GetAwaiter().GetResult()); 
    } 

    public async void Save() 
    { 
     JsonObject jsonObject = new JsonObject(); 
     jsonObject["value1"] = JsonValue.CreateNumberValue(Data._value1); 
     jsonObject["value2"] = JsonValue.CreateNumberValue(Data._value2); 
     jsonObject["value3"] = JsonValue.CreateNumberValue(Data._value3); 

     string newData = jsonObject.Stringify(); 
     await FileIO.WriteTextAsync(file, newData); 
     //FileIO.WriteTextAsync(file, newData).AsTask().ConfigureAwait(true).GetAwaiter(); 
    } 
} 

我得到这个错误: System.UnauthorizedAccessException的:“拒绝访问。 (来自HRESULT的异常:0x80070005(E_ACCESSDENIED))'

如果问题没有解决方法,是否有另一种方法来保存应用程序数据?

+0

你检查了这个:https://stackoverflow.com/a/11523266/2656632? –

回答

0

App文件夹中的所有文件都是只读的。因此,在将数据写入该文件之前,请尝试将FileAttributes设置为Normal。你可以使用下面的代码

File.SetAttributes(file, FileAttributes.Normal); 
+0

我得到这个:System.UnauthorizedAccessException:'访问路径'C:\ Users \ Carlos Giovano \ documents \ visual studio 2017 \ Projects \ App1 \ App1 \ bin \ x86 \ Debug \ AppX \ Data \ data.json'is被拒绝。“。我在以前版本的VS(2015)周年更新中测试了此代码,并且工作正常!我不知道如何以及为什么。 –

+0

你试过在管理员中运行VS吗?你有没有尝试上面的代码? –

相关问题