将InputStream转换为BufferedReader

时间:2011-03-04 22:56:54

标签: java android inputstream readline bufferedreader

我正在尝试使用Android资源目录中的InputStream逐行读取文本文件。

我想将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 个答案:

答案 0 :(得分:259)

BufferedReader无法直接包裹InputStream。它包裹了另一个Reader。在这种情况下,您需要执行以下操作:

BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));

答案 1 :(得分:21)

BufferedReader构造函数将reader作为参数,而不是InputStream。您应首先从流中创建一个Reader,如下所示:

Reader reader = new InputStreamReader(is);
BufferedReader br = new BufferedReader(reader);

最好还为StreamReader构造函数提供Charset或字符编码名称。由于流只提供字节,因此将这些字节转换为文本意味着必须知道编码。如果未指定,则假定为系统默认值。

答案 2 :(得分:19)

InputStream is;
InputStreamReader r = new InputStreamReader(is);
BufferedReader br = new BufferedReader(r);