java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。
输入输出流 简介一个流被定义为一个数据序列。输入流用于从源读取数据,输出流用于向目标写数据。
下图是一个描述输入流和输出流的类层次图:
在java.io包中操作文件内容的主要有两大类:字节流、字符流,两类都分为输入和输出操作。
在字节流中输出数据主要是使用OutputStream完成,输入使的是InputStream;在字符流中输出主要是使用Writer类完成,输入流主要使用Reader类完成。这四个都是抽象类。
java中提供了专用于输入输出功能的包java.io, 其中包括:
InputStream, OutputStream, Reader, Writer。
InputStream和OutputStream, 两个是为字节流设计的,主要用来处理字节或二进制对象。
Reader和Writer, 两个是为字符流(1个字符占2个字节)设计的,主要用来处理字符或字符串。
常见的System.in其实就是InputStream对象。
字节流转换为字符流为了方便处理字节流,我们经常会把字节流转换为字符流。例如:
Java 的控制台输入由 System.in 完成。为了获得一个绑定到控制台的字符流,我们可以把 System.in 包装在一个 BufferedReader对象中来创建一个字符流。
下面是创建 BufferedReader 的基本语法:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));