2016-11-11 2 views
0

Я тестирую свое приложение (с андроидными, ядровыми и настольными модулями) на рабочем столе, все работает нормально.Файл свойств файла android libGDX не найден

Теперь, когда я пытаюсь запустить на Android, он дает мне FileNotFound. Я связал ресурс Android с desktopLauncher перед запуском на рабочем столе, но я хотел сделать что-то подобное для Android?

  File file = Gdx.files.internal("liver_initial_joints.json").file(); 
      FileInputStream fis = new FileInputStream(file); 
      byte[] data = new byte[(int) file.length()]; 
      fis.read(data); 
      fis.close(); 

      str = new String(data, "UTF-8"); 

У меня есть файл в .../Android/активы/liver_initial_joints.json

ответ

1

Android не обеспечивает прямой доступ java.io.File к внутреннему каталогу приложений. Если вы посмотрите на javadocs для для libgdx, вы увидите, что он не использует ничего, кроме файлов абсолютного и внешнего типов.

Если вам просто нужно прочитать строку или массив байтов, вы можете использовать fileHandle.readString() или fileHandle.readBytes(). Если вам нужен входной поток, используйте fileHandle.read();.

Например:

 byte[] data = Gdx.files.internal("liver_initial_joints.json").read(); 
     str = new String(data, "UTF-8"); 
+0

внутренний() следующим образом() возвращает InputStream вместо байт [].. Но это решение, и это сработало, мне просто нужно было вызвать internal(). Read(). Read (data). Спасибо. – neogineer

1

Я нахожу очень простой способ сделать это с:

InputStream is = context.getAssets().open("liver_initial_joints.json"); 
+0

Спасибо! Но, это конкретный код этой платформы? является контекстом контекста SDK Android? – neogineer

+1

есть. жаль, что не уточнил, что –