0

我正在使用 Json 文件为我的应用程序进行本地存储。在使用 Visual Studio 的模拟器读取和写入文件时,可以正常工作。当我连接设备并尝试在该设备上运行时,我无法访问我的 Json 文件。

我的 json 文件总是设置为内容和复制。

这是我读取文件的尝试语句。我尝试了两种主要方法来访问文件Current.InstalledLocationUri("ms-appx:///). 两者似乎都可以在模拟器中工作,但都不能在设备上工作。

try
{ 
    var package = Windows.ApplicationModel.Package.Current.InstalledLocation;
    StorageFolder folder = await package.GetFolderAsync("Data");
    StorageFile file = await folder.GetFileAsync("Users.json");

    //Uri dataUri = new Uri("ms-appx:///Data/Users.json");
    //StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(dataUri);

    string jsonText = await FileIO.ReadTextAsync(file);
    JsonArray jsonArray = JsonArray.Parse(jsonText);

    foreach (JsonValue userValue in jsonArray)
    {
        //Build my model object out of json
    }
}
catch(Exception e)
{
    //Creating instance for the MessageDialog Class  
    //and passing the message in it's Constructor  
    MessageDialog msgbox = new MessageDialog(e.Message);
    //Calling the Show method of MessageDialog class  
    //which will show the MessageBox  
    await msgbox.ShowAsync();
}

输出窗口显示:

Exception thrown: 'System.ArgumentException' in mscorlib.ni.dll
Exception thrown: 'System.ArgumentException' in mscorlib.ni.dll

编辑:try catch 循环没有捕获与文件系统访问问题相关的异常。

在单步执行时启动时我失败了StorageFile file = await folder.GetFileAsync("Users.json");

为什么我通过我失败的按钮触发该功能string jsonText = await FileIO.ReadTextAsync(file);

我希望在其上运行我的应用程序的设备正在运行 Windows Embedded 8.1 Handheld update 2(它是 ToughPad Panazonic FZ-E1)。我是否需要针对 windows 8.1 而不是 windows phone 8.1?直到此时控制 POS 条码扫描仪为止,它一直可以与手机一起正常工作。

任何帮助将不胜感激我不知所措。我的问题可能是由设备上的设置引起的吗?

4

2 回答 2

2

尝试在其上使用流阅读器,如下所示:

var myStream = await (await Package.Current.InstalledLocation.GetFolderAsync("Data")).OpenStreamForReadAsync("Users.json");
于 2016-07-13T07:22:23.470 回答
0

检查 json 文件的属性。右键单击文件-> 属性。

检查复制到输出目录并在菜单中选择始终复制选项。那应该有帮助。

于 2016-07-13T07:09:09.453 回答