Java、Java综合问题

分别以字节流和字节缓冲流完成图片文件的复制(可通过系统自带的图片查看工具打开复制得到的文件,以验证是否复制成功),并打印两种方式分别耗费的时间。

回答:经过测试很明显可以发现通过缓冲写入是可以加快速度的,代码如下

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));
    }
}