2016-08-04 3 views
0

Я пытаюсь прочитать конкретный файл из определенной папки на Android, который затем будет считываться в базу данных SQLite. Чтение в базу данных отлично работает, когда я извлекаю его из папки с ресурсами (но это не будет работать для окончательной сборки, так как файл будет меняться в момент времени). Однако у меня возникают постоянные проблемы с файлом, который не найден для фактического доступа к файлу.Android Выбор конкретного местоположения файла

На устройстве путь к файлу отображается как «/ storage/emulated/0/Wellpro», а имя файла - «orfice.txt».

В настоящее время мой код для доступа к файлу сбрасывается из примерно 3 или 4 разных источников, так как я ничего не нашел для этого конкретно.

 String fileName = "/storage/emulated/0/Wellpro/orfice.txt"; 
     String path = Environment.getExternalStorageDirectory()+fileName; 
     InputStream is = new FileInputStream(path); 
     BufferedReader buffer = new BufferedReader(new InputStreamReader(is, "UTF-8")); 

Любая помощь была бы принята с благодарностью.

Спасибо.

ответ

1

getAbsolutePath() дает вам полный путь к SD-карте.

попробовать

String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath(); 
String fileName = "myFile.txt"; 

// check if file path exist then read the file 
File f = new File(baseDir + File.Separator + fileName); 
FileInputStream fiStream = new FileInputStream(f); 
+0

Файл не находится на пути к SD-карте. Он сидит внутри папки. Кроме того, я не знаю, если это изменит ситуацию, но это не проблема с SD-картой. Он находится на внутреннем хранилище, но в хранилище, доступном для любого приложения. Хотя, я понимаю, что в любом случае это рассматривается как внешнее хранилище. – Mitchell

+0

Я точно не понял. счастлив, если это поможет понять. – Kathi

+0

Файл сидит с папкой под названием «Wellpro». Итак, мне нужно будет попасть в эту папку, в первую очередь, что путь к SD-карте не будет делать, я бы не подумал? – Mitchell

0

Ваша первая ошибка состоит в том, что имя файла должно быть "orfice.txt", поскольку Environment.getExternalStorageDirectory() дает вам путь. Следуйте за решением Kathi, которое хорошо.

Если у вас по-прежнему возникает проблема, убедитесь, что вы добавили требуемое надлежащее разрешение на доступ к внешнему хранилищу. Если вы разрабатываете для API < 23, добавить в Android Manifest следующего разрешения

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

Если вы разрабатываете для API = 23, вы должны запросить разрешение на время выполнения. Для получения дополнительной информации о том, как это сделать, отметьте https://developer.android.com/training/permissions/requesting.html.

+0

Итак, я бы поставил «/ storage/emulated/0/Wellpro /» в getExternalStorageDirectory, например getExternalStorageDirectory («/ storage/emulated/0/Wellpro /»)? – Mitchell

+0

no вы должны использовать Файл файла = новый файл (Environment.getExternalStorageDirectory(). GetAbsolutePath() + "/Wellpro/orfice.txt"); Примечание. Внешнее хранилище является частью вашей встроенной флэш-памяти. –

+0

Лучше также использовать Environment.getExtrenalStorageDirectory() без getAbsolutePath() –

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