Преобразование 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();
...


что я делаю неправильно или как я должен это сделать? Спасибо!

552   3  

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

    Ничего не найдено.