1、
Io流内容很多,简单的分一下
java 字节类型,byte 8位
java 字符类型,char 16位
| 字节流 | 字符流 | ||
流类 | InputStream
|
| Reader
| int read()˖ close(): |
OutputStream
|
| Writer
| write() flush() 流刷新 close() 关闭前可以先flush | |
常见方法
|
|
| ||
特点 | 读到一个字节就返回一个字节 | 基于字节流,读取字节时去查了指定的码表 | ||
总结 | 处理纯文本文件用字符流,其他同字节流(如mp3,avi) |
节点流 | 处理流 | ||
文件流
| FileInputStream FileOutputStrean FileReader FileWriter | 缓存流 | BufferedImputStrean BufferedOutputStream BufferedReader BufferedWriter |
数组流 | ByteArrayInputStream ByteArrayOutputStream CharArrayReader CharArrayWriter | 转换流 | InputStreamReader OutputStreamWriter 要inputStream或OutputStream作为参数 实现从字节流到字符流的转换 |
字符串流 | StringReader StringWriter | 数据流 | DataInputStream DataOutputStream |
管道流 | PipedInputStream PipedOutputStream CharArrayReader CharArrayWriter |
|
|
| |||
节点流 | 可以从或向一个特定的地方(节点)读写数据。 | ||
处理流 | 是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如BufferedReader。处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接 |
节点流:可以从或向一个特定的地方(节点)读写数据。如FileReader
处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如BufferedReader。处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接
常用的节点流
父 类 InputStream OutputStream Reader Writer
文 件 *FileInputStream FileOutputStrean FileReader FileWriter 。文件进行处理的节点流
数 组 *ByteArrayInputStream ByteArrayOutputStream CharArrayReader CharArrayWriter 对数组进行处理的节点流(对应的不再是文件,而是内存中的一个数组)
字符串 *无 无 StringReader StringWriter 对字符串进行处理的节点流
管 道 *PipedInputStream PipedOutputStream PipedReader PipedWriter 对管道进行处理的节点流
常用处理流(关闭处理流使用关闭里面的节点流)
父 类 InputStream OutputStream Reader Writer
缓冲流 *BufferedImputStrean BufferedOutputStream BufferedReader BufferedWriter –
转换流 *InputStreamReader OutputStreamWriter- 要inputStream或OutputStream作为参数,实现从字节流到字符流的转换
数据流 *DataInputStream DataOutputStream -提供将基础数据类型写入到文件中,或者读取出来,为什么要有这个流呢?看这样的分析,如果没有这种流的话,有一个long,本身只占8个字节,如果我要写入到文件,需要转成字符串,然后在转成字符数组,那空间会占用很多,但是有了这种流之后就很方便了,直接将这8个字节写到文件就完了。。是不是既节约了内存空间有让程序写起来更加方便简单了呐。写倒是很简单,但是读取的时候就注意了,根据读取的数据类型,指针会往下移,所以你写的顺序必须要和读的顺序一致才能完成你正确的需求