我正在使用 Json 文件为我的应用程序进行本地存储。在使用 Visual Studio 的模拟器读取和写入文件时,可以正常工作。当我连接设备并尝试在该设备上运行时,我无法访问我的 Json 文件。
我的 json 文件总是设置为内容和复制。
这是我读取文件的尝试语句。我尝试了两种主要方法来访问文件Current.InstalledLocation
和Uri("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 条码扫描仪为止,它一直可以与手机一起正常工作。
任何帮助将不胜感激我不知所措。我的问题可能是由设备上的设置引起的吗?