• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
开水房
ASP.NET
博客园    首页    新随笔    联系   管理    订阅  订阅
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);
        }
    }
posted on 2011-06-09 13:50  白开水皮皮  阅读(1738)  评论(1)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3