Преобразование InputStream в BufferedReader
Я пытаюсь прочитать текстовый файл строка за строкой с помощью InputStream из каталога активов в Android.
Я хочу преобразовать InputStream в BufferedReader, чтобы иметь возможность использовать readLine().
у меня есть следующий код:
InputStream is;
is = myContext.getAssets().open ("file.txt");
BufferedReader br = new BufferedReader (is);
в третьей строке выводится следующая ошибка:
Multiple markers at this line
The constructor BufferedReader (InputStream) is undefinded.
то, что я пытаюсь сделать в C будет что-то вроде:
StreamReader file;
file = File.OpenText ("file.txt");
line = file.ReadLine();
line = file.ReadLine();
...
что я делаю неправильно или как я должен это сделать? Спасибо!
3 ответов:
BufferedReaderНе могу обернутьInputStreamнапрямую. Он обертывает другойReader. В этом случае вы хотели бы сделать что-то вроде:BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
bufferedreader конструктор принимает читатель в качестве аргумента, а не InputStream. Сначала вы должны создать читателя из вашего потока, например:
Reader reader = new InputStreamReader(is); BufferedReader br = new BufferedReader(reader);предпочтительно, вы также предоставляете имя кодировки или кодировки символов конструктору StreamReader. Поскольку поток просто предоставляет байты, преобразование их в текст означает, что кодировка должна быть известна. Если вы не укажите его, то по умолчанию предполагается.
InputStream is; InputStreamReader r = new InputStreamReader(is); BufferedReader br = new BufferedReader(r);
Comments