2015-04-23 4 views
0

Я создал простое приложение для Android, которое отображает текст пользователю.AndroidStudio не может найти файл CSV. Tried Absolute File Path & Relative File Path

Теперь я пытаюсь реализовать CSVReader для извлечения текста из файла CSV. После нескольких часов попробовать разные вещи.

Я наконец реализовал открытый исходный код CSVReader (По крайней мере, это не дает мне никаких ошибок компиляции).

Теперь, когда я запускаю приложение, он падает, и я получаю исключение «файл не найден». Либо я не помещаю свой CSV-файл в нужное место, я не ссылаюсь на правильный путь к файлу, или и то, и другое.

Я пробовал использовать абсолютный путь к файлу (например, начиная с моего C:/Users/Tim/AndroidStudioProjects/...).

Я также попытался использовать относительный путь, начиная с папки «Активы» (например, "Assets/SOCIAL_POSTS.csv"), и ничто из того, что я пробовал, не сработало.

Я пробовал искать похожие вопросы по переполнению стека, и я пробовал несколько вариантов путей к файлу, и до сих пор ничего не работало. Как вы думаете, что я должен попробовать дальше?

Вот link к этому проекту на GitHub.

код, указывающий на файл CSV под

app > src > main > java > com > example > tim > inspiredquestions 

Файл CSV называется SOCIAL_POSTS.csv и находится под

Assets > SOCIAL_POSTS.csv 

Конечная нота: Я использовал StackOverflow для отладки помощи для год, но это первый вопрос, который я задал.

Благодарим за ваше терпение! Я стараюсь быть настолько уверенным в себе, насколько могу, но я иду на коне и прошу помощи. Я уверен, что эта проблема имеет простой ответ, который я пропускаю.

+0

Вам необходимо создать свою папку с ресурсами в файле app/src/main/assets – WISHY

+0

, который java-файл читает csv-файл? –

+0

Game.java читает файл csv. Также я забыл подтолкнуть мой последний код. Пожалуйста, потяните от мастера, чтобы получить обновленный код. Извините за отсутствие ясности/хлопот. –

ответ

0

Я наконец понял ответ. Я добавил final CSVReader csvReader = новый CSVReader (новый InputStreamReader (c.getAssets(). Open ("SOCIAL_POSTS.csv") к моей функции загрузки в Game.java после просмотра ответа на this question. Ранее я поставил свой файл CSV в папке с ресурсами в приложении/src/main, но я не знал, как правильно обращаться к файлу до тех пор, пока вы не просмотрите эту запись SO.

0

Как я использую Android Studio для размещения файлов в папке с исходными текстами, тогда перетащите их в каталог/data/data/yourapplication/files. Я делаю это через Tools/Android/Android Device Monitor и перейдите в каталог/data/data/yourapplication/files и выберите значок в правом верхнем углу, в котором говорится: «Push файл на устройство ", затем перейдите к необработанным файлам в моем приложении и выберите файлы csv, которые я хочу поместить в каталог/files. От этого po int Я направляю своих читателей потока в этот каталог, в моем случае, /data/data/app/com.android/example/darrell/MenuPlanner/files Directory. Файлы адресованных здесь использовать расширение файла и не нужен путь, указанный:

public List<EntreeData>  ReadEntreesFromFilesDir(Context inContext) { 
    this.mContext = inContext; 
    List<String> lines = new ArrayList<String>(); 
    String[] separated; 
     try { 
      FileInputStream fis = mContext.openFileInput("entrees.csv"); 
      InputStreamReader isr = new InputStreamReader(fis); 
      BufferedReader bufferedReader = new BufferedReader(isr); 
      while ((mLine = bufferedReader.readLine()) != null) { 
       if (mLine == null) break; 
       lines.add(mLine); 
      } 
      fis.close(); 
      isr.close(); 
     } catch (FileNotFoundException e) { 
      Log.d("FILE ERROR", e.getMessage() + " not found"); 
     } catch (IOException ioe) { 
      Log.d("FILE ERROR", ioe.getMessage()); 
     } 
    for (int x = 0;x<lines.size();x++){ 
     separated = lines.get(x).split(","); 
     EntreeData thisEntree = new EntreeData(); 
     thisEntree.setEntreeName(separated[0].trim()); 
     thisEntree.setCategory(separated[1].trim()); 
     thisEntree.setSubcategory(separated[2].trim()); 
     thisEntree.setRecipe(separated[3].trim()); 
     mEntreeList.add(thisEntree); 
    } 
    return mEntreeList; 
} 

Как запасной вариант я прочитал из/RES/необработанного каталог, который не записываемый и я уверен в файл integrety. Файлы здесь не используют расширение, поэтому укажите читателя потока в файл без использования имени расширения. также использовать менеджер активов, чтобы получить доступ к этим файлам:

public List<EntreeData>  ReadEntreesFileFromRaw(Context inContext) { 
    this.mContext = inContext; 
    List<String> lines = new ArrayList<String>(); 
    String[] separated;  
    AssetManager assetManager = mContext.getAssets(); 
    try { 
     InputStream inputStream = mContext.getResources().openRawResource(R.raw.entrees); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); 
     int lineCount = 0; 
     while ((mLine = reader.readLine()) != null) { 
      separated = mLine.split(","); 
      EntreeData entreeEntry = new EntreeData(); 
      if (mLine == null) break; 
      separated = mLine.split(","); 
      entreeEntry.setEntreeName(separated[0].trim()); 
      entreeEntry.setCategory(separated[1].trim()); 
      entreeEntry.setSubcategory(separated[2].trim()); 
      entreeEntry.setRecipe(separated[3].trim()); 
      mEntreeList.add(lineCount, entreeEntry); 
      lineCount++; 
     } 
     inputStream.close(); 
    } catch (FileNotFoundException e) { 
     Log.d("FILE ERROR", e.getMessage() + " not found"); 
    } catch (IOException ioe) { 
     Log.d("FILE ERROR", ioe.getMessage()); 
    } 

    return mEntreeList; 
} 

удачи и счастливого программирования!

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

  • Нет связанных вопросов^_^