IO流概述
定义:存储和读取数据的解决方案,用于读写文件中的数据

分类1:

输入流:
输出流:
分类2:

字节流:
字符流:
IO流体系:

字节流
写出步骤:
FileOutputStream对象:创建程序与文件的传输通道
细节1:参数为字符串或file对象均可
细节2:若文件不存在,则会创建一个新文件,但前提是父级路径存在
细节3:若文件已经存在,则会清空文件并更新
write:写出数据(ASCII码)
close:拆卸传输通道,解除文件占用,每次使用以后都要释放资源
写出数据方法:



换行和续写
String.getBytes:能返回一个字符数组,帮助我们直接根据字符串写出数据
在写出两个数据之间写出一个换行符即可
Windows:\r\n
Linux:\n
Mac:\r
续写:
在创建对象处打开续写开关:FileOutputStream fos = new FileOutputStream(String,true),true表示打开续写开关
总结:

写入步骤:

FileInputStream对象:创建程序与文件的传输通道
细节1:若文件不存在,则直接报错
read:写入数据(ASCII码),一次只读一个字节,若read没有读取到数据,则返回-1
close:拆卸传输通道,解除文件占用,每次使用以后都要释放资源
字节输入流循环读取:

小文件拷贝
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
FileInputStream f1 = new FileInputStream("D:\\蜂考大物速成\\a.txt");
FileOutputStream f2 = new FileOutputStream("D:\\新建文件夹.txt");
int b, count = 0;
while((b = f1.read()) !=-1){
f2.write(b);
count++;
}
f2.close();
f1.close();//先开的流0后关
System.out.println("读取并写入了 " + count + " 个字节。");
}
}
一次读取多个字节:

try...catch异常处理:


字符集
ASCII字符集

GBK字符集(Windows默认)
英文:
汉字:


总结

Unicode字符集(兼容ASCII码):

UTF-8编码黑色的部分为Unicode编码对应二进制数字填补进去,英语用一个字节表示,中文用三个字节表示
总结:

出现乱码解决:
1、不用字节流读取文本文件
2、编码解码用同一个码表,同一个编码方式
编码解码方法:

字符流
字符流 = 字节流 + 字符集
输入流:一次读一个字节,遇到中文时,一次读多个字节
输出流:底层会把数据按照编码方式编码,变成字节再写到文件中
使用场景:用于纯文本文件进行读写操作,读文字不会出现乱码

输入步骤

1、创建字符输入流对象

2读取数据

3、释放资源
空参read方法

有参read方法

输出步骤


字符输入流底层原理:



字符输出流底层原理:



2676

被折叠的 条评论
为什么被折叠?



