Не удается прочитать файл из внутреннего хранилища (проблема с файлом не существует) - PullRequest
1 голос
/ 07 ноября 2011

У меня маршрутизированное устройство, и когда я делаю это

adb shell  cat /data/misc/bluetooth/dynamic_auto_pairing.conf

, оно печатает содержимое этого файла.

Но в моем коде, когда я пишу что-то подобное, оно говоритФайл не существует.Ну, из консоли я вижу, что знаю, что есть, но из кода я не могу это прочитать.У меня вопрос, в чем проблема, я пропускаю какое-то разрешение или в чем проблема?Может ли кто-нибудь предоставить мне код для чтения содержимого этого файла.

Спасибо

File pa = new File("/data/misc/bluetooth/","dynamic_auto_pairing.conf");
//this doesn't works also
//File pa = new File("/data/misc/bluetooth","dynamic_auto_pairing.conf");
//File pa = new File("/data/misc/bluetooth/dynamic_auto_pairing.conf");
if(pa.exists()){
    Log.v("tag", "does exists");
}else{
    Log.v("tag", "does NOT exist");
}

Ответы [ 3 ]

2 голосов
/ 07 ноября 2011

Если файл находится на SDCard, попробуйте:

File pa = new File(Environment.getExternalStorageDirectory() + "/data/misc/bluetooth/dynamic_auto_pairing.conf");

Также попробуйте добавить:

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

вне <application></application> в файле манифеста.

РЕДАКТИРОВАТЬ
Если файл находится во внутренней памяти: Ваше приложение может читать только из специальной папки во внутренней памяти.Путь к этой папке возвращается: getFilesDir (). GetAbsolutePath ()

Поэтому поместите файл туда и прочитайте его с помощью openFileInput().

Дополнительная информация: http://developer.android.com/guide/topics/data/data-storage.html#filesInternal

0 голосов
/ 25 октября 2018

Если вы используете Android 6.0 или выше.Вы должны запросить разрешение в коде.

0 голосов
/ 07 ноября 2011

Из документов на File ...

публичный файл (String dirPath, String name)

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

В вашем коде вы используете ...

File pa = new File("/data/misc/bluetooth/","dynamic_auto_pairing.conf");

... и поскольку ваш dirPath заканчивается разделителем "/data/misc/bluetooth/", это приведет к двум разделителям. Другими словами, эффективный путь будет ...

/ данные / разное / Bluetooth // dynamic_auto_pairing.conf

Обратите внимание на // после 'bluetooth`

...