总体结构
流的分类
按方向分
- 输入流: 将 < 存储设备 > 中的内容读入到 < 内存 > 中.
- 输出流: 将 < 内存 > 中的内容写入到 < 存储设备 > 中.
按代为分
- 字节流: 以字节为单位, 可以读写所有数据.
- 字符流: 以字符为单位, 只能读写文本数据.
IO流的作用
用来处理设备间数据传输问题
常见的应用:文件复制、文件上传、文件下载
IO流的使用场景
如果操作的是纯文本文件,优先使用字符流
如果操作的是二进制文件,优先使用字节流
如果不确定,则优先使用字节流
字节流
字节流抽象基类
inputstream
outputstream
字节流写数据
基本步骤
创建FileOutputStream对象,关联到一个文件路径
调用write()方法,写出数据
调用close()方法,释放资源
打开文件,查看内容
三种方式
write(int b) 一次写一个字节数据
write(byte[] arr) 一次写一个字节数组
write(byte[] arr,int index,int len) 写字节数组的一部分
两个问题
1.如何写换行:调用write()方法,写出”\r\n”.getBytes()即可
2.如何文件续写:使用FileOutputStream(String name,boolean append)构造方法,构造方法中第二个参数传递true,则在文件末尾继续写数据
异常处理
字节流写数据同时处理异常的重要步骤
将创建字节流对象和写出数据的代码放在try中
在catch中捕获IOException异常
在finally中进行释放资源
字符流
由于字节流操作中文不是特别的方便,所以Java就提供字符流
字符流 = 字节流 + 编码表
字符输入流(Reader)
字符输出流(Writer)