Как писать/читать в JavaFX с плагином Gluon

Я пытаюсь писать/читать файлы в JavaFX при использовании плагина Gluon, и мне не повезло. Если я запускаю программу как настольное приложение, она работает нормально, я даже использовал те же функции в Android IDE, и она работает нормально, однако, если я отправляю программу на свой телефон с помощью Gluon, она не работает. Я хочу знать, как сохранять/читать файлы в Gluon, и что я сделал не так, и почему он работает на рабочем столе и на Android, но не в Gluon. Две fcns, которые я использовал:

public void writeToFile() {

  try {

      FileOutputStream f = new FileOutputStream("Meal1_Protein.txt");
      f.write(choice.getBytes()); //Choice is input from a dropdown
         f.close();

  } catch (FileNotFoundException e) {
      e.printStackTrace();
  } catch (IOException e) {
      e.printStackTrace();
  }
  Toast toast = new Toast(choice);
  toast.show();

 }

public void readFromFile(){

try {
    FileInputStream f = new FileInputStream("Meal1_Protein.txt");
    InputStreamReader is = new InputStreamReader(f);
    BufferedReader br = new BufferedReader(is);
    StringBuffer buff = new StringBuffer();

    String lines;

    while((lines = br.readLine())!=null){

        buff.append(lines);
        buff.append("\n");
    }


   carbInput.setText(buff.toString()); // inserting into a txtfield 
   //to see if it I can read strings back in. 
    Toast toast = new Toast(buff.toString());
    toast.show();

} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

}


person Squatch    schedule 19.08.2018    source источник
comment
Когда вы говорите, что это не работает на вашем телефоне, какое поведение/ошибки вы видите?   -  person craigcaulfield    schedule 20.08.2018
comment
По сути, он должен показывать, что я выбрал в раскрывающемся меню в текстовом поле. И это не так, поэтому я сделал Toast с buff.toString(), чтобы увидеть, что читается, и ничего не показывает.   -  person Squatch    schedule 20.08.2018
comment
Когда вы запускаете его на Android, вы получаете какие-либо исключения? (используйте adb logcat из терминала, чтобы увидеть результат процесса). Чтобы писать на мобильных устройствах, вы можете воспользоваться сервисом Storage: Services.get(StorageService.class).ifPresent(s -> s.getPrivateStorage()). Это даст вам файл/каталог в частной среде, связанный с установленным приложением. Взгляните на этот пример для аналогичного случая.   -  person José Pereda    schedule 22.08.2018
comment
Я попытался использовать службы из примера, который видел ранее, я попытался использовать logcat и искал имя файла с помощью FINDSTR в Windows, и он отвечает Нет такого файла или каталога   -  person Squatch    schedule 23.08.2018
comment
Пробовал использовать, if (!f.exists()) { f.mkdirs(); } но это тоже не сработало, и у меня есть внутренние и внешние разрешения, установленные в манифесте   -  person Squatch    schedule 23.08.2018
comment
Вы запускали образец Gluon SQLite? Работает ли это для вас? Обратите внимание, что личное хранилище является частным, и вы не сможете получить к нему доступ извне, а только через свое приложение.   -  person José Pereda    schedule 25.08.2018


Ответы (1)


Используйте StorageService.

Служба хранилища предоставляет доступ к частным и общедоступным хранилищам для приложения, предлагаемого собственной платформой.

person Hezhao Huang    schedule 15.03.2021