Невозможно получить доступ к файлам на телефонном устройстве 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. Щелкните правой кнопкой мыши файл-> Свойства.

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

Другие вопросы по тегам