Файлы хранятся на устройстве в определенном, зависящем от приложения месте, что, как я полагаю, openFileInput
добавляет в начале имени файла.Окончательный результат (местоположение + имя файла) составляется следующим образом:
/data/data/<application-package>/files/<file-name>
Также обратите внимание, что в документации говорится, что openFileInput
параметр не может содержать разделители пути .
Чтобы избежать жесткого кодирования пути к местоположению, который в принципе может отличаться от устройства к устройству, вы можете получить объект File
, указывающий на каталог хранилища, вызвав getFilesDir
, и использовать его для чтения любого файла, который выхотел бы.Например:
File filesDir = getFilesDir();
Scanner input = new Scanner(new File(filesDir, filename));
Обратите внимание, что построение Scanner
путем передачи String
в качестве параметра приведет к тому, что сканер будет работать с содержимым строки, то есть интерпретировать его как фактическое содержимое для сканированияа не как имя файла для открытия.