Чтение файла из Android-ресурсов с помощью FileReader - PullRequest
0 голосов
/ 04 июня 2018

Я пытаюсь прочитать файлы из ресурсов, но они не читают файл и не выдают исключение.Я работаю над системой OCR, которая читает слово или предложение и извлекает из него имена, сравнивая слова или группу алфавитов с ArrayList, созданным из этого файла "names.txt".Имен около 15000, каждое имя хранится в отдельной / отдельной строке.На самом деле, я добавляю эти имена в ArrayList, чтобы узнать, существует ли конкретное имя в этом файле.Все сделано и проверено, осталось только прочитать файл.Я пробовал тот же код с Java IDE, которая читает файлы с диска, и он работает на Java ide, но не в Android Studio.Пробный кусок кода:

FileReader freader = new FileReader("file:///android_asset/names.txt");
BufferedReader br = new BufferedReader(freader);

Я также пробовал,

FileReader freader = new FileReader(getAssets().open("names.txt"));
BufferedReader br = new BufferedReader(freader);

выдает ошибку

Error:(1387, 26) error: no suitable constructor found for FileReader(InputStream)
constructor FileReader.FileReader(File) is not applicable (argument mismatch; InputStream cannot be converted to File)
constructor FileReader.FileReader(FileDescriptor) is not applicable (argument mismatch; InputStream cannot be converted to FileDescriptor)
constructor FileReader.FileReader(String) is not applicable (argument mismatch; InputStream cannot be converted to String)"

А также это:

FileReader freader = new FileReader(context.getAssets().open("names.txt"));
BufferedReader br = new BufferedReader(freader);

Это говорит "не может разрешить символ" контекст ""

Путь к файлу здесь .

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Вам не нужно FileReader.Используйте BufferedReader, обернутый вокруг InputStreamReader, обернутый вокруг InputStream, который вы уже получили от getAssets().open().

0 голосов
/ 04 июня 2018

FileReader нужен путь к файловой системе.

Нет конструктора для входного потока.

Так что вы не можете использовать FileReader для чтения файлов из ресурсов.

Скопируйте файл из ресурсов в файловую систему.

После этого используйте этот файл в файловой системе.

Если вы не настаиваете на использовании FileReader, вы можете изменить

FileReader freader = new FileReader(getAssets().open("names.txt"));
BufferedReader br = new BufferedReader(freader);

до

InputStream is = getAssets().open("images/names.txt");
BufferedReader br = new BufferedReader(is);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...