在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文件夹复制功能是通过编程实现的,主要涉及到文件操作和网络通信两个核心知识点。这里有两个关键类:`FileSelection` 和 `BackupClient`。`FileSelection` 类用于选择和组织待复制的文件,而 `BackupClient` 类...
Java文件操作一例:Copy 复制文件,虽然是复制文件,不过通过本源码你可以学习很多相关的Java基础技巧,比如Java对文件的事件处理、取得目录内容的事件处理、如何弹出文件选择器、如何得到选择文件的绝对路径、如何...
FileOperate 是一个文件操作工具类,提供了多种文件操作方法,包括新建目录、新建文件、复制文件、剪切文件等。 `public class FileOperate {` `public static void main(String args[]){` `newFolder("D:/100");` ...
里面包含了高效处理文件流的一个java文件,工作时总会用到 个人原创 请使用者标明作者信息 谢谢 oneRose 奉献(下载后的朋友们给点意见 谢谢)
java实现excel表格文件的复制,测试可用,将excel表格的表头和内容拷贝到新表中
java文件夹和文件复制,
对于更复杂的情况,如递归复制整个目录结构,我们需要编写自定义逻辑,遍历目录并逐个复制文件。例如,我们可以创建一个递归函数,接收源文件夹和目标文件夹作为参数,然后对源文件夹中的每个文件或子目录进行复制...
本主题将深入探讨如何使用Java实现文件复制、File类的文件读取和写入,以及I/O流的读取与写入。下面将详细阐述这些知识点。 1. **Java文件复制** 文件复制通常涉及读取源文件内容并将其写入目标文件。在Java中,...
在Java编程中,处理tar.gz文件常常用于归档和压缩大量数据。tar.gz文件是由tar命令创建的归档文件,然后通过gzip工具进行压缩。在Java中解析这种类型的文件,通常需要两个步骤:首先解压gzip,然后解包tar。这里我们...
这是JAVA SE中的文件复制的代码,很多人对于文件复制不是很理解,希望通过此代码可以帮助更多的人来理解怎么是用Java语言实现文件的复制
根据给定的文件信息,我们将深入探讨Java读写文件文本文件的关键知识点,这些知识点主要集中在文件的读取、写入以及流的复制等操作上。 ### Java读取文本文件 在Java中,读取文本文件通常涉及到使用`InputStream`...
利用java编程实现简单的文件复制程序,txt文件复制
在Java编程语言中,文件复制是一项常见的操作,用于在不同的位置之间移动或备份数据。这里提供的代码示例展示了如何在Java中实现文件和目录的复制功能。以下是对这段代码的详细解析: 首先,我们导入所需的Java类:...
二、复制文件的方法 复制文件是指将源文件的内容复制到目标文件中。Java中有多种方法可以实现文件复制,包括使用文件流、BufferedReader和BufferedWriter等方式。在本例中,我们使用文件流的方式来复制文件。 三、...
7. **文件复制与移动**:Java提供了一些方法来复制或移动文件。例如,可以使用Files类的copy()和move()方法,这些方法提供了原子性操作,确保在出现异常时文件状态的完整性。 8. **文件权限**:Java 7引入了Files类...
System.err.println("复制文件时发生错误:" + e.getMessage()); } } } ``` 在这个例子中,我们使用了try-with-resources语句,确保在复制完成后自动关闭所有打开的流,避免资源泄露。readLine()方法逐行读取...
copyFile方法用于复制文件。该方法首先判断源文件是否存在,如果不存在则返回false。如果存在,则获取待复制文件的文件名,并将其复制到目标文件夹中。在复制过程中,我们使用FileInputStream和FileOutputStream类来...
复制文件和文件夹是文件管理器的核心功能。在Java中,可以使用`java.io.FileInputStream`和`java.io.FileOutputStream`配合`byte[]`数组实现文件内容的复制。而对于文件夹的复制,通常需要递归地遍历文件夹中的所有...
在上述代码中,`BufferedReader`的`readLine()`方法用于按顺序读取文件内容,直到文件末尾。如果文件内容较多,使用缓冲可以显著提高读取速度,因为数据会一次性读入内存,而不是每次读取一个字符。 除了`...