字节缓冲流
BufferedInputStream的使用
package My_Demo.IO;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
/**
* 使用字节缓冲流读取
* BufferedInputStream的使用
*/
public class Demo04 {
public static void main(String[] args)throws Exception {
FileInputStream fis=new FileInputStream("G:\\Demo\\Demo01.txt");
//文件输入流实际上就是节点流
BufferedInputStream bis=new BufferedInputStream(fis);
//在字节缓冲流中读取文件
int count=0;
while ((count=bis.read())!=-1){//bis内部有个buf缓冲数组8k
System.out.print((char)count);
}
bis.close();//(缓冲区自动帮你关闭fis)
}
}
}
自建缓冲区
自建缓冲区
byte []buf=new byte[1024];
int count=0;
while((count=bis.read(buf))!=-1){
System.out.println(new String(buf,0,count));
}
缓冲区,等于里面建了一个buf数组,帮你把数据存到里面
当内存中需要读取的数据在缓冲区有时,就可以直接到缓冲区内拿,而不访问磁盘,提高效率
BufferedInputStream内的buf数组长度8k
BufferedOutputStream的使用
写完后及时的flash,不然数据只会在缓冲区,写不进硬盘中
关闭bos.close();时,内部会自动调用flush方法
当缓冲满了会调用flushBuffer方法,并不会丢失数据
缓冲满了就flush,你可以把缓冲理解成快递员,车满了不能再放了就送了
package My_Demo.IO;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
/**
* 使用字节缓冲流读取
* BufferedOutputStream的使用
*/
public class Demo05 {
public static void main(String[] args) throws Exception {
//1.创建字节输出缓冲流
FileOutputStream fos=new FileOutputStream("G:\\Demo\\Buffer.txt");
BufferedOutputStream bos=new BufferedOutputStream(fos);
//2.写入文件
for (int i = 0; i < 10; i++) {
bos.write("i wish you happy\r\n".getBytes());//因为write方法传入需要一个数组,
// 所以调用getBytes()方法,将字符串存在字符数组中,并传给write方法
/*getBytes() 使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中*/
bos.flush();//刷新到硬盘
}
bos.close();//(缓冲区自动帮你关闭fos)
System.out.println("执行完毕");
}
}