2017-07-01 71 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嗎?你有沒有嘗試上面的代碼? –

相關問題