一、概述
IO流的思维导图如下图所示
![](https://img-blog.csdnimg.cn/img_convert/5edf512c4157a22a84a85dc69d636001.png)
1.1. IO流的类型:字节流,字符流
1.2. IO流的作用:读取,写入数据
1.3. IO流的分类:输入流,输出流
二、字节流
字节流的思维导图如下图所示
![](https://img-blog.csdnimg.cn/img_convert/4c7d269e9b03a596d397a4246360bd6a.png)
1.1. 字节输入流:InputStream
FileInputStream、ByteArrayInputStream、PipeInputStream都继承了InputStream
FileInputStream用于读取文件,ByteArrayInputStream用于读取字节数组。
2.2 字节输出流:OutputStream
FileOutputStream、ByteArrayOutputStream、PipeOutputStream都继承了InOutStream
FileOutputStream用于读取文件,ByteArrayOutputStream用于读取字节数组。
三、字符流
![](https://img-blog.csdnimg.cn/img_convert/2f911d59073de7459175d46c26dd976c.png)
四、例子
这里用了try-with-resources写法,也就是不用手动关闭文件,流等
import java.io.*;
public class MainTest {
public static void main(String[] args) {
String inputFile = "input.txt";
String outputFile = "output.txt";
try (FileInputStream in = new FileInputStream(new File(inputFile));
FileOutputStream out = new FileOutputStream(new File(outputFile)))
{
//从文件中读出
byte[] buffer = new byte[1024];
int length = 0;
while ((length = in.read(buffer)) != -1) {
//打印到控制台
System.out.write(buffer, 0, length);
//写入文件
out.write(buffer, 0, length);
}
//写入文件
String content = "Hello, World!";
out.write(content.getBytes());
} catch (IOException e){
e.printStackTrace();
}
}
}