Java - 关于InputStream,InputStreamReader和BufferedReader

来源:互联网 发布:it人才网 编辑:程序博客网 时间:2024/05/02 02:41


Java - 关于InputStream,InputStreamReader和BufferedReader

InputStreamReader将基于byte的Stream转换为基于char的Reader,此时需要有Charset介入。InputStreamReader有多个构造函数,如果构造函数中没有指定Charset,则转换将按照系统默认的Encoding方式完成,如果指定了Charset,便按照该Charset进行转换。

BufferedReader继承自Reader类,是对Reader一种封装,或者说是通过decorator模式对Reader类的扩展。Reader只有read方法,没有readLine方法,而BufferedReader有readLine方法,所以通常采用BufferedReader来完成按行读取文件或者命令行。

 

有了以上的BufferedReader和InputStreamReader,我们来看看怎么样按行来读取命令行字符,首先要读取字符,我们需要一个Reader,而处理命令行的System.in为InputStream类型,所以此时我们需要将InputStream转换为Reader类型,那么InputStreamReader就派上用场了。

InputStreamReader inputStreamReader = new InputStreamReader(System.in);

 

接下来我们还需要按行来读取,而InputStreamReader不提供readLine方法,我们还需要将InputStreamReader转换为BufferedReader:

BufferedReader bufferReader = new BufferedReader(inputStreamReader);

 

现在我们便可以按行读取了:

String line = bufferedReader.readLine();
0 0