Невозможно получить доступ к файлам на телефонном устройстве Windows 8.1
Я использую файлы Json для локального хранения для моего приложения. При использовании эмулятора Visual Studio чтение и запись в файлы работает корректно. Когда я подключаю устройство и пытаюсь запустить его, я не могу получить доступ к файлам Json.
Мои файлы JSON всегда установлены в Content и Copy.
Вот мое заявление о попытке чтения файла. Я пробовал два основных способа доступа к файлу 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.
Любая помощь будет оценена, я в недоумении. Может ли моя проблема быть вызвана настройками на устройстве?
2 ответа
Попробуйте использовать потоковый ридер, как показано ниже:
var myStream = await (await Package.Current.InstalledLocation.GetFolderAsync("Data")).OpenStreamForReadAsync("Users.json");
Проверьте свойства файла JSON. Щелкните правой кнопкой мыши файл-> Свойства.
Проверьте копию в выходной каталог и выберите опцию всегда копировать в меню. Это должно помочь.