分别以字节流和字节缓冲流完成图片文件的复制(可通过系统自带的图片查看工具打开复制得到的文件,以验证是否复制成功),并打印两种方式分别耗费的时间。
回答:经过测试很明显可以发现通过缓冲写入是可以加快速度的,代码如下
package test;
import java.io.FileInputStream;
import java.io.FileOutputStream;
/**
* @author bbyh
* @date 2022/12/24 0024 21:56
* @description
*/
public class BosTest {
public static String FILENAME = "D:/1.jpg";
public static String DESC_FILENAME = "D:/new.jpg";
public static void main(String[] args) throws Exception {
long start = System.currentTimeMillis();
try (FileInputStream is = new FileInputStream(FILENAME);
FileOutputStream os = new FileOutputStream(DESC_FILENAME)) {
int read;
while ((read = is.read()) != -1) {
os.write(read);
}
}
long end = System.currentTimeMillis();
System.out.println("字节流写入结束");
System.out.println("耗时:" + (end - start));
}
}
package test;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
import static test.BosTest.*;
/**
* @author bbyh
* @date 2022/12/24 0024 22:03
* @description
*/
public class BosArrayTest {
public static void main(String[] args) throws Exception {
long start = System.currentTimeMillis();
try (BufferedInputStream bis = new BufferedInputStream(Files.newInputStream(Paths.get(FILENAME)));
BufferedOutputStream bos = new BufferedOutputStream(Files.newOutputStream(Paths.get(DESC_FILENAME)))) {
byte[] buf = new byte[1024];
int read;
while ((read = bis.read(buf)) != -1) {
bos.write(buf, 0, read);
}
}
long end = System.currentTimeMillis();
System.out.println("字节流数组写入结束");
System.out.println("耗时:" + (end - start));
}
}