2016-07-11 2 views
0

Я использую файлы Json для локального хранилища для своего приложения. При использовании эмулятора Visual Studio для чтения и записи в файлы работает правильно. Когда я подключаю устройство и пытаюсь запустить его на этом устройстве, я не могу получить доступ к своим Json-файлам.Не удается получить доступ к файлам на устройстве Windows 8.1

Мои файлы 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 

Edit: Петля задвижка попытка не ловить исключения, связанные с проблемой доступа к файловой системе.

При запуске, когда пошагового я не успеваю на 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.

Любая помощь будет оценена Я в затруднении. Может ли моя проблема быть вызвана настройками на устройстве?

+0

Вместо того, чтобы сообщение, вы можете поделиться полный 'ToString()' выход за исключением, в том числе типа исключения, сообщения и TRACEBACK? – dbc

+0

При осмотре мой блок catch catch даже не перехватывает исключения. Исключением, которое я видел, является каким-то образом из-за дальнейшей функции. Исключения mscorlib не кажутся причинами каких-либо проблем, кроме как выгнать меня из моего контрольного пункта. – JaredStroeb

ответ

0

Проверьте свойства json-файла. Щелкните правой кнопкой мыши файл-> Свойства.

Проверьте копию в каталоге вывода и выберите в меню всегда вариант копирования. Это должно помочь.

2

Попробуйте использовать для чтения потока на нем, как показано ниже:

var myStream = await (await Package.Current.InstalledLocation.GetFolderAsync("Data")).OpenStreamForReadAsync("Users.json"); 
Смежные вопросы