首页 > 代码库 > 比较java新旧I/O的性能——以复制大文件为例
比较java新旧I/O的性能——以复制大文件为例
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")); } }
比较java新旧I/O的性能——以复制大文件为例
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。