5.文件字节流-通过缓冲区来提高读写效率
作者:互联网
1.通过缓冲区提高读取效率-方式一
通过创建字节数组作为缓冲区,提高读写效率,这边固定了1024字节
举个例子:有2048斤大米。如果没有定义缓冲区,就像是一粒一粒的搬回家,创建了缓存区,1024字节,就类似你有个口袋,这个口袋可以装1024斤大米,这样你搬2次,就可以全部搬完
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class Dome03 {
public static void main(String[] args) {
FileInputStream fis = null;
FileOutputStream fos = null;
try {
//创建字节流输入对象
fis = new FileInputStream("d:/zm.png");
//创建字节流输出对象
fos = new FileOutputStream("d:/dome.png");
//创建缓冲区
byte [] buff = new byte[1024];
int temp = 0;
while ((temp = fis.read(buff)) != -1) {//读取到缓冲区
//从缓冲区读取
fos.write(buff,0,temp);//这一步只是把文件字节流写到了内存中
}
fos.flush();//这一步才是把文件字节流写到磁盘中
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (fis != null) {
fis.close();
}
if (fos != null) {
fos.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
2.通过缓冲区提高读取效率-方式二
通过创建字节数组作为缓冲区,提高读写效率,这边使用了文件大小作为缓冲区大小,但是如果文件过大,那对内存的占用也是很大的,所以文件过大时,不建议使用此方式
举个例子:相比较于方式一,有的人力气大,一下子可以扛2048斤大米,这样一次就可以全部搬回家了
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class Dome03 {
public static void main(String[] args) {
FileInputStream fis = null;
FileOutputStream fos = null;
try {
//创建字节流输入对象
fis = new FileInputStream("d:/zm.png");
//创建字节流输出对象
fos = new FileOutputStream("d:/dome.png");
//创建缓冲区
byte[] buff = new byte[fis.available()];//通过计算文件大小来决定缓冲区的大小
fis.read(buff);//读取文件到缓冲区
fos.write(buff);//从缓冲区读取文件~这一步只是把文件字节流写到内存中
fos.flush();//这一步才是把文件字节流写到磁盘中
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (fis != null) {
fis.close();
}
if (fos != null) {
fos.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
标签:fis,字节,fos,读写,缓冲区,new,null 来源: https://www.cnblogs.com/lyq888/p/16126973.html