java复制大文件

来源:互联网 发布:57是什么意思网络用语 编辑:程序博客网 时间:2024/05/16 13:45
import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.RandomAccessFile;import java.math.BigDecimal;import java.nio.ByteBuffer;import java.nio.MappedByteBuffer;import java.nio.channels.FileChannel;public class Main {/** * @param args * @throws FileNotFoundException */public static void main(String[] args) throws FileNotFoundException {// TODO Auto-generated method stubString fileName = "E:/迅雷下载/dota2/Dota2.7z.001";String fn = "E:/Dota2.7z.001";int SIZE = 0x400;File file = new File(fileName);File file2 = new File(fn);FileChannel fc = new RandomAccessFile(file, "r").getChannel();FileChannel fc1 = new RandomAccessFile(file2, "rw").getChannel();ByteBuffer rBuffer = MappedByteBuffer.allocate(SIZE);ByteBuffer wBuffer = MappedByteBuffer.allocate(SIZE);long start = System.currentTimeMillis();double read = 0.0;double bd=0.0;try {System.out.println(fc.size());int num = 0;while ((num = fc.read(rBuffer)) != -1) {//rBuffer.flip();fc1.write(wBuffer.wrap(rBuffer.array()));rBuffer.clear();read+=num;bd=new BigDecimal((read/file.length())*100).setScale(2,BigDecimal.ROUND_FLOOR).doubleValue();System.out.println(bd+"%");}long end = System.currentTimeMillis();System.out.println(end - start);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

0 0
原创粉丝点击