将InputStream转换为BufferedReader

我试图从Android的资产目录中使用InputStream逐行读取文本文件。

我想将InputStream转换为BufferedReader以便能够使用readLine()。

我有以下代码:

InputStream is; is = myContext.getAssets().open ("file.txt"); BufferedReader br = new BufferedReader (is); 

第三行删除以下错误:

 这条线上有多个标记
构造函数BufferedReader(InputStream)是未知的。 

我想在C中做的事情是这样的:

 StreamReader file; file = File.OpenText ("file.txt"); line = file.ReadLine(); line = file.ReadLine(); ... 

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

BufferedReader不能直接包装InputStream 。 它包装另一个Reader 。 在这种情况下,你会想要做一些事情:

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

BufferedReader构造函数将读取器作为参数,而不是InputStream。 您应该先从stream中创build一个Reader,如下所示:

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

最好还为StreamReader构造函数提供一个字符集或字符编码名称。 由于stream只是提供字节,所以将它们转换为文本意味着编码必须是已知的。 如果您没有指定,则假定系统默认。

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