2016-06-13 3 views
0

У меня есть ошибка здесь:Файл не найден на устройстве Android

FileHandle file = Gdx.files.internal("hscore.json"); 

Показано, что она не может быть найдено:

... 
com.badlogic.gdx.utils.GdxRuntimeException: File not found: hscore.json (Local) 
at com.badlogic.gdx.files.FileHandle.read(FileHandle.java:136) 
... 

Он работает на моем рабочем столе, но терпит неудачу, как это на мой Телефон на Андроиде.

Я использую Android Studio, где храню файл в папке с ресурсами, находящейся в папке android. enter image description here

Я понятия не имею, почему он не может найти его на андроиде?

Update: Я не знаю, что произошло в это время, но сейчас он выделяет эту строку кода после метания ту же ошибку:

String s = file.readString(); 


Она может читать .txt файлы и другие файлы, которые я использую просто отлично, кажется, что .json-файл является проблемой для android?


До этого не будет решена, я использую настройки для сохранения данных там, а не весь класс в .json

+0

попробуйте Gdx.files.classpath ("hscore.json"); для файлов папок с данными – Vickyexpert

+0

@Vickyexpert Пробовал все, не работает. – Vepir

+0

назначить полный путь как файл: ///android_asset/hscore.json – Vickyexpert

ответ

0

Благодаря чат с p.streef Этот вопрос пришел к закрытию, Сорта ,

1) Я создал новый файл test.txt, и он отлично работал над этим чтением.

Может быть, сам файл .json был реальной проблемой?

2) Но тогда я переименовал его в text.json, а затем обратно в hscore.json

Он работал хорошо в обоих случаях при открытии и чтении файла.

Я понятия не имел, почему исходный файл .json не читается?

3) Я также убил и перезапустил свою андроидскую студию за это время, потому что он застыл в точке при создании моего проекта.


После всего этого проблема файл не найден разрешилась сама собой.

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

Я решил придерживаться тогда настроек как окончательного решения.

0

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

Вот пример

public static File getFile(Context context) throws IOException { 
     File cacheFile = new File(context.getCacheDir(), "hscore.json"); 
     try { 
      InputStream inputStream = context.getAssets().open("hscore.json"); 
      try { 
       FileOutputStream outputStream = new FileOutputStream(cacheFile); 
       try { 
        byte[] buf = new byte[1024]; 
        int len; 
        while ((len = inputStream.read(buf)) > 0) { 
         outputStream.write(buf, 0, len); 
        } 
       } finally { 
        outputStream.close(); 
       } 
      } finally { 
       inputStream.close(); 
      } 
     } catch (IOException e) { 
      throw new IOException("Could not open robot png", e); 
     } 
     return cacheFile; 
    } 

И вы можете вызвать этот метод, чтобы получить получить файл

FileHandle file = Gdx.files.internal(getFile(aContext).getPath()); 
+0

«Контекст» - это хороший контекст. Передача активности или view.getContext() на этот метод –

+0

У меня нет активности или представлений, мой основной класс расширяет ApplicationAdapter и вызывает и выталкивает новое состояние в конце метода create, в котором я переопределяю метод Update для выполнения мои методы, метод Render для рисования моих текстур ... – Vepir

+0

Где ваш основной класс инициализирован? Вы всегда можете передать контекст в свой конструктор класса –

Смежные вопросы