public classBufferTest {private static final String TO = "F:\\test\\1.5gtest.mp4";private static final int _100Mb = 1024 * 1024 * 100;public static voidmain(String[] args) {long sum = 0;
String src= "F:\\test\\1.5gtest.mp4";for (int i = 0; i < 3; i++) {
String dest= "F:\\test\\1.5gtest_" + i + ".mp4";//sum += io(src,dest);//54606
sum += directBuffer(src,dest);//50244
}
System.out.println("总花费的时间为:" +sum );
}private static longdirectBuffer(String src,String dest) {long start =System.currentTimeMillis();
FileChannel inChannel= null;
FileChannel outChannel= null;try{
inChannel= newFileInputStream(src).getChannel();
outChannel= newFileOutputStream(dest).getChannel();
ByteBuffer byteBuffer=ByteBuffer.allocateDirect(_100Mb);while (inChannel.read(byteBuffer) != -1) {
byteBuffer.flip();//修改为读数据模式
outChannel.write(byteBuffer);
byteBuffer.clear();//清空
}
}catch(IOException e) {
e.printStackTrace();
}finally{if (inChannel != null) {try{
inChannel.close();
}catch(IOException e) {
e.printStackTrace();
}
}if (outChannel != null) {try{
outChannel.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}long end =System.currentTimeMillis();return end -start;
}private static longio(String src,String dest) {long start =System.currentTimeMillis();
FileInputStream fis= null;
FileOutputStream fos= null;try{
fis= newFileInputStream(src);
fos= newFileOutputStream(dest);byte[] buffer = new byte[_100Mb];while (true) {int len =fis.read(buffer);if (len == -1) {break;
}
fos.write(buffer,0, len);
}
}catch(IOException e) {
e.printStackTrace();
}finally{if (fis != null) {try{
fis.close();
}catch(IOException e) {
e.printStackTrace();
}
}if (fos != null) {try{
fos.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}long end =System.currentTimeMillis();return end -start;
}
}