按方向可分为输入流输出流
按处理单位可分为字节流和字符流
按功能可分为节点流和处理流
>## 字节流
```
FileInputStream(File file | String source);
FileOutputStream(File file | String target);
// 字节数组流
ByteArrayInputStream(byte[] buf);
ByteArrayOutputStream(int size); // 默认缓冲区32字节
// 对象流
ObjectInputStream(InputStream is);
ObjectOutputStream(OutputStream os);
// 字节缓冲流,缓存,提高效率
BufferedInputStream(InputStream is, int size);
BufferedOutputStream(OutputStream os, int size);
```
>## 字符流
```
FileReader(File file | String source);
FileWriter(String target | File file, boolean append);
// 字符缓冲流
BufferedReader(Reader r, int size);
BufferedWriter(Writer w, int size);
// 字节字符桥接流
InputStreamReader(InputStream is, String character);
OutputStreamWriter(OutputStream os, String charater);
PrintWriter(String target, String character)
```
*****
**tip**
- 输入输出流一般成对出现。
- io流的关闭原则是“先打开,后关闭”,或者根据依赖原则,先关闭处理流,再关闭节点流。
- 2111总结
- 1.面向对象
- 1.0.1 super()与this()的区别
- 1.0.2 private、default、protected、public的访问范围
- 1.0.3 continue、break、return区别
- 1.0.4 重载和重写的区别
- 1.0.5 final的特点
- 1.0.6 抽象类与接口的区别
- 1.0.7 java类型
- 1.0.8 什么是反射
- 1.0.9 类的加载机制
- 1.1.1 jvm内存结构
- 1.1.2 java垃圾回收机制
- 1.1.3 并发问题
- 1.1.3.1 线程的状态与关系
- 1.1.3.2 并发的三大性质
- 1.1.3.3 线程的实现与使用
- 1.1.3.4 线程池相关
- 1.1.3.5 并发相关方法
- 1.1.3.6 线程相关工具
- 1.1.4 jdk8特性
- 1.1.4.1 lambad表达式的使用
- 1.1.4.2 stream API
- 1.1.4.3 Optional容器使用
- 1.1.4.4 LocalDateTime
- 1.15 io流
- 1.16 动态代理实现
- 2.JavaEE
- 2.0.1 JSP四大作用域九大内置对象
- 2.0.2 cookie与session的区别
- 4.数据库相关
- 5.git版本管理
- 7.一些问题解决
- 7.1 分布式锁如何实现