码迷,mamicode.com
首页 > 编程语言 > 详细

好记性不如烂笔头5-JAVA快速文件拷贝

时间:2015-01-29 17:38:52      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:java   源代码   复制文件   索引分发   

    如果使用luncene或者hadoop等文件系统的话,有大量的索引文件需要分发,可以利用现成的分发工具,也可以自己写程序进行快速的文件拷贝;

使用NIO进行快速的文件拷贝

package com.daily;

 

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.nio.channels.FileChannel;

 

/**

 *NIO进行快速的文件拷贝,maxCount=128M,复制351M文件,耗时11001(毫秒)

 *同样的文件,用(64 * 1024 *1024) - (32 * 1024) ,耗时18192(毫秒)

 *@author 范芳铭

 */

public class EasyFastCopy {

 

    publicvoid fileCopy(String in, String out) throws IOException {

        FileChannelinChannel = new FileInputStream(new File(in)).getChannel();

        FileChanneloutChannel = new FileOutputStream(new File(out)).getChannel();

        try{

            //如果内存大,这个值可以适当扩大;对大文件的复制有优势

            //intmaxCount = (128 * 1024 * 1024);

            //intmaxCount = (8 * 1024 * 1024);

             int maxCount = (64 * 1024 * 1024) - (32 *1024);  

            longsize = inChannel.size();

            longposition = 0;

            while(position < size) {

                position+= inChannel

                        .transferTo(position,maxCount, outChannel);

            }

        }finally {

            if(inChannel != null) {

                inChannel.close();

            }

            if(outChannel != null) {

                outChannel.close();

            }

        }

    }

 

    publicstatic void main(String[] args) throws Exception {

        longstart = System.currentTimeMillis();

        EasyFastCopycopy = new EasyFastCopy();

        copy.fileCopy("D:/ffm83/big.rar","D:/ffm83/temp/big.rar");

        longend = System.currentTimeMillis();

        System.out.println("快速文件拷贝耗时:" + (end - start) +"(毫秒)");

    }

 

}

好记性不如烂笔头5-JAVA快速文件拷贝

标签:java   源代码   复制文件   索引分发   

原文地址:http://blog.csdn.net/ffm83/article/details/43273433

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!