nio - 直接内存复制文件

import java.io.*;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.util.Date;

public class Test {
    public static void main(String[] args){
        Test t = new Test();
        t.directBuffer();
        t.io();
    }

    public void directBuffer(){
        long time1 = new Date().getTime();
        File f = new File("F:/test");
        File film1 = new File("F:/test/01.mp4");
        File film2 = new File("F:/test/03.mp4");
        try {
            FileChannel fis = new FileInputStream(film1).getChannel();
            FileChannel fos = new FileOutputStream(film2).getChannel();

            ByteBuffer bb = ByteBuffer.allocateDirect(1024 * 1024);
            while(true){
                int read = fis.read(bb);
                if(read != -1){
                    bb.flip();
                    fos.write(bb);
                    bb.clear();
                }
                else{
                    break;
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
        long time2 = new Date().getTime();
        long time = time2 - time1;
        System.out.println("直接内存方法复制文件使用了" + time + "毫秒");
    }

    public void io(){
        long time1 = new Date().getTime();
        File f = new File("F:/test");
        File film1 = new File("F:/test/01.mp4");
        File film2 = new File("F:/test/02.mp4");
        try {
            FileInputStream fis = new FileInputStream(film1);
            FileOutputStream fos = new FileOutputStream(film2);

            byte[] b = new byte[1024 * 1024];
            while(true){
                int read = fis.read(b);
                if(read != -1){
                    fos.write(b);
                }
                else{
                    break;
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
        long time2 = new Date().getTime();
        long time = time2 - time1;
        System.out.println("普通nio方法复制文件使用了" + time + "毫秒");
    }
}

 

posted @ 2019-10-28 12:27  不咬人的兔子  阅读(394)  评论(0编辑  收藏  举报