将 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();
...

我做错了什么,或者我应该怎么做? 谢谢!

207745 次浏览

BufferedReader不能直接包装一个 InputStream。它包装另一个 Reader。在这种情况下,你可以这样做:

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

BufferedReader 构造函数接受 读者作为参数,而不是 InputStream。你应该首先从你的信息流中创建一个 Reader,如下所示:

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

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