IO流缓冲,学习笔记 ;基础入门,一看就懂,一篇文章解决缓冲好吧
程序员文章站
2022-06-05 19:46:05
...
首先了解以下缓冲流BufferedInputStream和BufferedOutputStream
概念 : BufferedInputStream和BufferedOutputStream这两个类分别是FilterInputStream和FilterOutputStream的子类,这两个东西多出来的作用就是使用缓冲区,也就是通过缓冲区一次性读取很多的流,等缓冲区满了后一次性写入磁盘的操作就是缓冲流
简而言之就是你在创建完io流后把io流在扔到缓冲区Buffered就可以了
BufferedReader和 BufferedWriter也与之类似,注意,在写完数据后要i盗用close()或类似的方法,强行将缓冲区的数据写出
优点 : 缓冲区的效率更高,更好用
代码演示环节 :
首先来一边InputStream和OutputStream:
try {
//这里可能看着比较乱,实际上就是我创建了一个缓冲区BufferedInputStream然后直接在缓冲区中new 的一个输出流
BufferedInputStream in = new BufferedInputStream(new FileInputStream("src/_IO流基础_1/aa.txt"));
//同理
BufferedOutputStream ou = new BufferedOutputStream(new FileOutputStream("src/_IO流基础_1/基础.txt"));
byte[] by = new byte[1024];
int t;
while((t = in.read(by))!=-1) {//这里面加数组是直接走到了这个数组的最长长度,比如这里输出in.read(by)的话就是1024
ou.write(new String(by,0,t).getBytes());//这个是String的构造函数,哪一个数组,从哪里开始,走多长的距离
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
总结:如果第一小节看懂了,这里应该也差不多
接下来Reader和Writer:
try {
//这么个流程和上面可以说是一毛一样
BufferedReader in = new BufferedReader(new FileReader("src/_IO流基础_1/aa.txt"));
BufferedWriter ou = new BufferedWriter(new FileWriter("src/_IO流基础_1/基础s.txt"));
char[] by = new char[1024];//但是这里要改成char了,输出是按照字符输出的
int t;
while((t = in.read(by))!=-1) {
ou.write(new String(by,0,t).toCharArray());//这个函数是将字符串转化成字符数组
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
转换流:
首先从InputStream开始,OutputStream就不介绍了,一样的
转换流 : 字节转字符
直接开讲 :
FileInputStream fr=null; //存储具体的流
try {
//1、获取file对象
File file = new File("src/_IO流基础_1/aa.txt");//File 类获取file对象 , 类构造方法获取文件
//2、提供具体的流
fr = new FileInputStream(file);
//这里是转化成字符流,可能写的比较乱,这是在以前写的基础上改的//重点只有这一句,类似于缓冲流,就是将创建好的IO流扔到转化区就可以了
InputStreamReader inp = new InputStreamReader(fr);
//3、数据的读入,
// read()返回读入的一个字符,如果到达文件末尾,返回-1
//方式一:一个字节的读
// int read = fr.read();
// while (read !=-1){
// System.out.print((char) read);
// read = fr.read();
// }
//方式二:字节数组读取
char[] buffer = new char[1024];
int len;
while ((len=inp.read(buffer)) !=-1){
String str = new String(buffer, 0, 1024);
System.out.print(str);
}
System.out.println();
} catch (Exception e) {
e.printStackTrace();
} finally {
//4、流的关闭
try {
if(fr !=null) fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
上一篇: 一篇文章带你了解CSS基础知识和基本用法
下一篇: Spring Boot入门就靠这一篇