用到的包 java.io
流的分类
1、按数据流的方向分为输入流和输出流
2、按处理数据单位分为字节流和字符流
3、按功能不同分为节点流和处理流
四种抽象流类型
字节流 | 字符流 | |
输入流 | InputStream | Reader |
输出流 | OutputStream | Writer |
节点流类型
处理流
1、缓冲流
缓冲流要“套接”在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,同时增加了一些新方法。
BufferedReader(Reader in)
BufferedReader(Reader in,int sz) //sz为自定义缓存区大小
BufferedWriter(Writer out)
BufferedWriter(Writer out,int sz)
BufferedInputStream(InputStream in)
BufferedInputStream(InputStream in,int size)
BufferedOutputStream(InputStream in)
BufferedOutputStream(InputStream in,int size)
BufferedReader 和BufferedWriter提供了readLine和newLine用于读取和写入一行字符串。
2、转换流
InputStreamReader和OutputStreamWriter用于字节数据到字符数据之间的转换
InputStreamReader需要和InputStream套接
OutputStreamWriter需要和OutputStream套接
转换流在构造时可以指定其编码集合,例 InputStreamReader isr =new InputStreamReader(Systerm.in,"ISO8859_1")
3、数据流
解决Java原始类型数据的输入输出
DataInputStream\DataOutputStream
套接在InputStream和OutputStream上
字节数组流:ByteArrayOutputStream | ByteArrayInputStream
4、Print流
只有输出流
PrintWriter | PrintStream 分别针对字符和字节
不会抛出异常
有自动flush功能
5、Object流
直接将Object写入或读出
ObjectInputStream | ObjectOutputStream
操作的类需要实现Serializable接口标记为可序列化
transient修饰成员变量,在序列化时不予考虑。
externalizable接口继承自Serializable 可自己实现序列化方法。