Почему file.exists () возвращает false?
Во-первых, ресурс - это файл на компьютере разработчика. Это не файл на устройстве.
Во-вторых, getPath()
на Uri
просто возвращает часть пути Uri
. В вашем случае это /raw/test.txt
. Если бы Uri
был https
URL вашего вопроса, путь был бы /questions/56090894/cant-access-file-in-the-raw-folder
. Ни один из них не будет действительным путем файловой системы на любом устройстве Android. Вы не можете взять полуслучайные строки, передать их конструктору File
и ожидать, что они будут иметь значение.
Мне нужно получить Uri файла
Если вы действительно имеете в виду «получить Uri
за ресурс», вы можете попробовать uri
. Схема android.resource
немного неясна, поэтому есть большая вероятность, что используемая вами функция не будет ее поддерживать.
В этом случае вам необходимо:
- Откройте
InputStream
на вашем необработанном ресурсе (getResources().openRawResource()
на Context
)
- Откройте
FileOutputStream
в файле, которым вы управляете (например, в getCacheDir()
)
- Скопируйте байты из
InputStream
в OutputStream
- Попробуйте
Uri.fromFile()
создать Uri
для библиотеки
Также возможно, что функция ожидает какой-то другой вид Uri
. Поскольку мы не знаем, что это за функция, мы не можем просмотреть ее документацию (если она есть) и сообщить вам, чего она может ожидать или не ожидать.