利用缓冲流实现文件拷贝 几点疑问
来源:3-14 缓冲流案例
小曼巴0
2020-11-04 22:44:42
# 具体遇到的问题
请问老师,我这里flush方法的使用正确吗?貌似放在while循环外面也能实现功能?
一般使用write方法之后是不是都需要使用flush方法?
# 粘贴全部相关代码,切记添加代码注释(请勿截图)
package pers.snail.buffer;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class BufferDemo2 {
public static void main(String[] args) {
// 使用缓冲流拷贝文件
try {
FileInputStream file1 =new FileInputStream("happy.jpg");
BufferedInputStream buffer1 = new BufferedInputStream(file1);
FileOutputStream file2 =new FileOutputStream("happycopy.jpg");
BufferedOutputStream buffer2 = new BufferedOutputStream(file2);
int n = 0;
byte[] b= new byte[1024];
long startTime = System.currentTimeMillis();
while((n=buffer1.read(b))!=-1) {
buffer2.write(b,0,n); //写到缓存区
buffer2.flush(); //强制清除缓存区
}
long endTime = System.currentTimeMillis();
System.out.println("程序运行时间"+(endTime-startTime));
file1.close();
buffer1.close();
file2.close();
buffer2.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch(IOException e) {
e.printStackTrace();
}
}
}
在这里输入代码,可通过选择【代码语言】突出显示
1回答
同学你好,
1、测试运行同学代码是可以,但flush写在循环外面就可以了,如果缓冲区满了会自动清空,将数据写入文件。最后调用flush()是为了清空缓冲区最后一次的数据,该数据没有充满缓冲区,需要强制清空。
2、是的,理解是正确的
相似问题
回答 2
回答 3