(抽象类流) | 字节流 | 字符流 |
输入流 | inputStream | Reader |
输出流 | OutputStream | Writer |
字节流是以字节(用的是byte类型的数组)为单位的。所以你看读入的数据都是按照字节来读写的。
字符流读写的时候,就用的是char类型的数组new String(char,0,readLen)
每次使用IO流之后一定要关闭IO流。
输入流
规定每次读入几个字节的数据,每次读入的数据长度是等于数组的长度的,且此时的返回追就是读取数据的长度;当读取的数据返回值为-1的时候说明读取完毕。最后要用String类,将每一次读入的数据(byte[])转换成String类型的数据。最后关闭数据流。
若是异常处理的时候用的是另外一种方式的话,我们就必须这样定义了。
FileInputStream f1 = null;
不然就会因为作用域的问题不能,在最后的finally将io流关闭了。
输出流
完成文件的拷贝的时候,可以一边写一边读。相比输入流,输出流就更加简单一点了。
字符流(效率更高一点)
处理流(包装流)
对于上述的处理流, 这两个处理流输入字符流,因此我们只能传入字符流,不能传入字节流。
因为在开发中,处理流的效率比较高,因此我们就最好使用处理流,而BufferReader 好 BufferWriter只能传入字符流,是按照字符操作的,因此不能处理二进制的文件,比如声音视频 doc、pdf等文件类型,因此还有两种类型就是BufferInputStream 和 BufferOutput
Stream.
对象流:
转换流:inputStreamReader OutputStreamReader
properties: