标签:
package newio; import java.io.*; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; /* * 分别采用新旧I/O包的API复制文件,比较性能 */ public class CopyFileCompara { public void copyFileOld(File from,File to) throws IOException{ //使用传统的I/O流处理(加了缓冲机制) FileInputStream fin=new FileInputStream(from); FileOutputStream fout=new FileOutputStream(to); BufferedInputStream in=new BufferedInputStream(fin); BufferedOutputStream out=new BufferedOutputStream(fout); int b; long start=System.currentTimeMillis(); while((b=in.read())!=-1){ out.write(b); } long cost=(System.currentTimeMillis()-start)/1000; System.out.println("旧I/O(使用缓冲)耗时:"+cost+"s"); out.close(); in.close(); } public void copyFileNew(File from,File to) throws IOException{ //使用Channel和Buffer处理 FileChannel fin=new FileInputStream(from).getChannel(); FileChannel fout=new FileOutputStream(to).getChannel(); long start=System.currentTimeMillis(); ByteBuffer bfi=fin.map(FileChannel.MapMode.READ_ONLY, 0, from.length()); fout.write(bfi); long cost=(System.currentTimeMillis()-start)/1000; System.out.println("新I/O耗时:"+cost+"s"); fout.close(); fin.close(); } public static void main(String[] args) throws IOException { //复制的文件大一点会更好地体现效果 new CopyFileCompara().copyFileOld(new File("F:\\01第一讲上.wmv"), new File("F:\\副本1.wmv")); new CopyFileCompara().copyFileNew(new File("F:\\01第一讲上.wmv"), new File("F:\\副本2.wmv")); } }
标签:
原文地址:http://blog.csdn.net/hellozpc/article/details/42719095