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 stub
String 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 block
e.printStackTrace();
}
}
}