在Java编程中,复制文件的方法有很多,而且经常要用到。我以前一直是缓冲输入输出流来实现的(绝大多数人都是如此),近来在研究JDK文档时发现,用 文件通道(FileChannel)来实现文件复制竟然比用老方法快了近三分之一。下面我就来介绍一下如何用文件通道来实现文件复制,以及在效率上的对比
-
用文件通道的方式来进行文件复制
/**
* 使用文件通道的方式复制文件
*
* @param s
* 源文件
* @param t
* 复制到的新文件
*/
public void fileChannelCopy(File s, File t) {
FileInputStream fi = null;
FileOutputStream fo = null;
FileChannel in = null;
FileChannel out = null;
try {
fi = new FileInputStream(s);
fo = new FileOutputStream(t);
in = fi.getChannel();//得到对应的文件通道
out = fo.getChannel();//得到对应的文件通道
in.transferTo(0, in.size(), out);//连接两个通道,并且从in通道读取,然后写入out通道
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fi.close();
in.close();
fo.close();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
-
与普通的缓冲输入输出流的复制效率的对比
普通的缓冲输入输出流代码:
测试代码:
输出结果:
-
由 此可见,FileChannel复制文件的速度比BufferedInputStream/BufferedOutputStream复制文件的速度快了 近三分之一。在复制大文件的时候更加体现出FileChannel的速度优势。而且FileChannel是多并发线程安全的。
P.S.
由于本人也不是什么高手大神,只是一名普通的Java开发者,所以其中有什么不到之处,请大家多多谅解,批评指出,一起交流讨论
VoyageLiu
2013.12.01
原文地址:http://jingyan.baidu.com/article/ff4116259c2d7712e4823780.html
相关推荐
java复制文件代码java复制文件代码java复制文件代码
java复制文件的4种方式 java复制文件的4种方式 java复制文件的4种方式
java复制文件方法,关于文件的操作,很全。
在Java编程中,复制文件的方法有很多,而且经常要用到。我以前一直是缓冲输入输出流来实现的(绝大多数人都是如此),近来在研究JDK文档时发现,用文件通道(FileChannel)来实现文件复制竟然比用老方法快了近三分之...
Java文件夹复制(远程复制(网络传输),用于远程备份文件)(支持文件夹,嵌套子文件夹) import java.io.*; import java.util.*; public class FileSelection { private File rootDirectory;//根目录 private ...
Java 单线程复制文件和使用RandomAccessFile多线程复制文件的比较,对应博客地址为http://blog.csdn.net/zmichealchow/article/details/38687431
里面有整个java复制文件及复制文件夹的代码,直接复制到eclipse等开发工具中既能使用;
java 复制指定目录下的文件 java 复制指定目录下的文件
java文件复制,使用java语言开发的,效果如windows 的复制和粘贴效果。
Java poi复制execl的sheet页,跨文件操作,数据和样式全部复制,工具类
一个简单的基于java实现的文件复制器,分享给大家学习
使用java创建文件并复制到另一个文件中
用户输入原始文件地址。。。然后输入要复制到的目录。
里面包含了高效处理文件流的一个java文件,工作时总会用到 个人原创 请使用者标明作者信息 谢谢 oneRose 奉献(下载后的朋友们给点意见 谢谢)
java实现excel表格文件的复制,测试可用,将excel表格的表头和内容拷贝到新表中
用java复制拷贝文本文件的不同方法和比较; 字节流,字符流等等。
java 使用IO流实现文件的复制 java 使用IO流实现文件的复制
java 连接 FTP 文件操作(上传,下载,删除,复制
Java文件复制源代码(含使用Swing组件、无法复制文件夹)
将文件从一个文件夹复制到指定的目录,可用于服务器文件复制,只需传入文件地址以及目录地址即可完成复制