java 文件 拷贝 file copy 管道对管道 速度最快

管道对管道的文件拷贝

    public static long forChannel(File f1,File f2) throws Exception{
        
long time=new Date().getTime();
        
int length=2097152;
        FileInputStream in
=new FileInputStream(f1);
        FileOutputStream out
=new FileOutputStream(f2);
        FileChannel inC
=in.getChannel();
        FileChannel outC
=out.getChannel();
        ByteBuffer b
=null;
        
while(true){
            
if(inC.position()==inC.size()){
                inC.close();
                outC.close();
                
return new Date().getTime()-time;
            }
            
if((inC.size()-inC.position())<length){
                length
=(int)(inC.size()-inC.position());
            }
else
                length
=2097152;
            b
=ByteBuffer.allocateDirect(length);
            inC.read(b);
            b.flip();
            outC.write(b);
            outC.force(
false);
        }
    }
原文地址:https://www.cnblogs.com/kevinge/p/2076325.html