java IO流
IO流
IO,指的是Input和Output,即输入和输出。
流,从概念上来说是一个数据流,可以从流中读数据,也可以往流中写数据。在IO中流可以是字节流,也可以是字符流。
输入流,从数据源读取到程序中;输出流,从程序中写出到数据源中。
注:输入/输出流是相对于我们的程序来说的,而不是数据源。
数据源
数据源,提供数据的原始媒介。
数据源分为,源设备和目标设备。
常用的数据源有:
- 文件
- 网络连接
- 内存
- 数据库
IO中四大抽象类
注:抽象类不可以被实例化,需要通过他的子类来实现。
字节流抽象类
InputStream:是字节输入流的所有类的父类。
常用的方法有:
- int read():读取一个字节的数据,返回值为-1,则代表结束。
- void close():关闭输入流,释放资源。
OutputStream:是字节输出流的所有类的父类。
常用的方法有:
- void write(int n):写入一个字节。
- void close():关闭输入流,释放资源。
字符流抽象类
Reader:用于读取的字符流抽象类。
常用的方法有:
- int read():读取一个字符的数据,返回值为-1,则代表结束。
- void close():关闭输入流,释放资源。
Writer:用于输出的字符流抽象类。
常用的方法有:
- void write(int n):写入一个字符。
- void close():关闭输入流,释放资源。
IO的分类
按照数据的基本单位不同分为:字节流和字符流
按照数据的流向不同分为:输入流和输出流
如 👇:
字节流 | 字符流 | |
---|---|---|
输入流 | InputStream | Reader |
输出流 | OutputStream | Writer |
程序示例
- 使用字节流读取D盘中的图片并将其写出到C盘
public class Test01 {
public static void main(String[] args) throws Exception{
//创建字节输入流对象
InputStream inputStream = new FileInputStream("D:\\savelearn\\pic\\1.jpg");
//创建字节输出流对象
OutputStream outputStream = new FileOutputStream("C:\\Users\\Lenovo\\Desktop\\test\\1.jpg");
int read;
while ((read=inputStream.read())!=-1){//读取文件直到结束
outputStream.write(read);//写入文件
}
System.out.println("写入完毕!");
//关闭流
inputStream.close();
outputStream.close();
}
}
- 使用字符流读取D盘中的文本文件并将其写出到C盘
public class Test02 {
public static void main(String[] args) throws Exception {
//创建字符输入流对象
Reader reader = new FileReader("D:\\savelearn\\pic\\1.txt");
//创建字符输出流对象
Writer writer = new FileWriter("C:\\Users\\Lenovo\\Desktop\\test\\1.txt");
int read;
//读取并且写入
while ((read=reader.read())!=-1){
writer.write(read);
}
//关闭数据流
reader.close();
writer.close();
}
}