有关java IO流的问题?

在通过IO输入流获取控制台输入的时候,发现大多数都是这么写的:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

我想问的是这段话能不能写成如下形式:

BufferedReader br = new BufferedReader(new Reader(System.in));

为什么必须要把控制台输入通过字节流转为字符流呢?不能直接用字符流读取然后转为高级字符流吗?

阅读 1.3k
1 个回答
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

System.in 是字节流,bufferedReader是字符流,InputStreamReader 用来把System.in这个字节流转化为字符流。

BufferedReader br = new BufferedReader(new Reader(System.in));
Reader 是抽象类不能直接new呀,所以需要使用Reader的实现类(子类),而InputStreamReader是Reader实现类,并且作用是将字节流转为字符流。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题