2015-07-26 2 views
1

Я пробовал решение, предлагаемое здесь: Load a simple text file in Android Studio среди прочих.Загрузить файл в Android Studio

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

(Sidenote Мне не обязательно иметь файлы в папке с ресурсами, они могут быть где угодно, если бы я мог их каким-то образом загрузить).

В основном, это говорит мне, чтобы проверить файл с именем «app.iml», чтобы иметь эту линию:

option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" 

Что он делает.

После этого добавьте файлы в каталог «assets».

затем я пытаюсь загрузить файл с:

File file = new File("IDs.txt"); 

и

Scanner in = new Scanner(file); 

Но я получаю файл не найден исключение.

Независимо от места, где я размещал файлы, я не могу их загрузить. Любые предложения?

+0

возможно дубликат [прочитанных папки Asset - только?] (http://stackoverflow.com/questions/10562904/is-asset-folder-read-only) – hata

+0

Я не пытаюсь писать, только читать –

+0

_Не открываем основной файл проекта .iml, но вместо этого откройте файл .iml основного модуля. Например. Если ваш проект «MyProject», и что вы на самом деле запускаете, это «приложение», затем откройте файл «MyProject/app/app.iml». Надеюсь, что это поможет. Ты попробовал это? – Antrromet

ответ

0

Ответ обновляется с копированием файлов в папку приложения

вы не можете открыть файл из активов с файла F = новый файл. Вы должны открыть такие активы, как это:

File ids = new File(getExternalFilesDir("txt") + File.separator + "IDs.txt"); 
InputStream is = null; 
    if (!ids.exists()) { 
     AssetManager manager = getAssets(); 
     try { 
      is = manager.open("IDs.txt"); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     if (is != null) 
     try{ 
      OutputStream outputStream = new FileOutputStream(ids); 
      byte buffer[] = new byte[1024]; 
      int length = 0; 

      while ((length = is.read(buffer)) > 0) { 
       outputStream.write(buffer, 0, length); 
      } 

      outputStream.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

    try { 
     is.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

Теперь вы можете установить файл или FILE_PATH к вам класс:

File ids = new File(getExternalFilesDir("txt") + File.separator + "IDs.txt"); 

Чтобы получить полное использование пути ids.getAbsolutePath();

+0

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

+0

Вы можете скопировать ресурс из MainAcivity при первом запуске в папку приложения. Через несколько минут я добавлю этот код к моему ответу – Beyka

+0

Я все еще не могу сканировать файл, используя методы вне класса MainActivity, используя это решение ... –

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