Java——IO流、字节流、字节缓冲流
一、IO流的概述
- I/O:输入/输出(Input/Output)
- 流:是一种抽象概念,是对数据传输的总称。数据在设备间的传输称为流,流的本质是数据传输
- IO流用来处理设备间数据传输问题
- IO流常用于文件复制、文件上传、文件下载
二、IO流分类
1、按照数据的流向:
- 输入流:读数据
- 输出流:写数据
2、按照数据类型:
- 字节流
- 字节输入流
- 字节输出流
- 字符流
- 字符输入流
- 字符输出流
一般说的IO流按照数据类型来分。
字符流和字节流在什么情况下使用?
- 如果数据通过windows自带的记事本打开,可以读懂内容,使用字符流,否则使用字节流。
- 如果不知道应该使用哪种,就使用字节流
三、字节流抽象基类
- InputStream:这个抽象类是表示字节输入流的所有类的超类
- OutputStream:这个抽象类是表示字节输出流的所有类的超类
- 子类名特点:子类名称都是以其父类名作为子类名的后缀
四、字节流写数据
1、 FileOutputStream(String name):创建文件输出流以指定的名称写入数据
public class Demo {
public static void main(String[] args) throws FileNotFoundException {
// FileOutputStream(String name):创建文件输出流以指定的名称写入数据
FileOutputStream fos = new FileOutputStream("File\\java.txt");
}
}
上述代码中,创建文件输出流主要做了三件事情:
- 调用系统功能创建了文件
- 创建了字节输出流对象
- 让字节输出流对象指向创建好的文件
FileOutputStream fos = new FileOutputStream(“File\java.txt”);
相当于
FileOutputStream fos = new FileOutputStream(new File(“File\java.txt”));
2、 字节流写数据的三种方式
① void write(int b):将指定的字节写入此文件输出流
import java.io.FileOutputStream;
import java.io.IOException;
public class Demo1 {
public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream("File\\java.txt");
//void write(int b):将指定的字节写入此文件输出流
fos.write(97);
fos.write(98);
fos.write(99);
fos.write(100);
fos.write(101);
}
}
② void write(byte[] b):将b.length字节从指定的字节数组写入此文件输出流,以此写一个字节数组数组
import java.io.FileOutputStream;
import java.io.IOException;
public class Demo2 {
public static void main(String[] args) throws IOException {
//void write(byte[] b):将b.length字节从指定的字节数组写入此文件输出流,以此写一个字节数组数组
FileOutputStream fos = new FileOutputStream