在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 io流和FileChannel来实现文件复制操作。 知识点1:Java IO流文件复制 在第一个实现方法中,我们使用了Java IO流来实现...
Java文件夹复制功能是通过编程实现的,主要涉及到文件操作和网络通信两个核心知识点。这里有两个关键类:`FileSelection` 和 `BackupClient`。`FileSelection` 类用于选择和组织待复制的文件,而 `BackupClient` 类...
Java程序“Java程序_复制文件.jar”是一个基于Java平台的实用工具,主要目的是演示如何在Java中实现文件的复制和移动操作。这个程序对于正在学习Java输入/输出(IO)和Swing GUI库的学生来说是一个很好的参考实例。...
一个简单的基于java实现的文件复制器,分享给大家学习
里面包含了高效处理文件流的一个java文件,工作时总会用到 个人原创 请使用者标明作者信息 谢谢 oneRose 奉献(下载后的朋友们给点意见 谢谢)
在Java编程中,判断文件类型通常不是通过文件扩展名,而是通过读取文件的头部字节来识别。这是因为有些文件可能没有明确的扩展名,或者扩展名被恶意篡改。文件头内容通常包含特定的标识符,这些标识符是文件格式的...
用java复制拷贝文本文件的不同方法和比较; 字节流,字符流等等。
在Java编程中,有时我们需要执行一些系统级别的操作,如创建目录、复制文件等,这些操作在Windows系统中可以通过命令行接口(CMD)来完成。Java提供了Runtime类和ProcessBuilder类来实现这样的功能,允许我们调用...
在给定的Java代码中,我们可以看到,程序首先定义了写入文件的路径、切分文件的路径、数据的个数、子文件的个数、精度等变量,然后使用WriteData方法将大数据文件写入到指定的路径中。WriteData方法使用FileWriter和...
对于更复杂的情况,如递归复制整个目录结构,我们需要编写自定义逻辑,遍历目录并逐个复制文件。例如,我们可以创建一个递归函数,接收源文件夹和目标文件夹作为参数,然后对源文件夹中的每个文件或子目录进行复制...
本主题将深入探讨如何使用Java实现文件复制、File类的文件读取和写入,以及I/O流的读取与写入。下面将详细阐述这些知识点。 1. **Java文件复制** 文件复制通常涉及读取源文件内容并将其写入目标文件。在Java中,...
- 文件复制可以使用`java.nio`包中的`Channels`和`FileInputStream`/`FileOutputStream`来实现高效的数据传输。通过创建`FileChannel`实例,使用`transferTo()`或`transferFrom()`方法进行复制。 4. **文件压缩与...
根据给定的文件信息,我们将深入探讨Java读写文件文本文件的关键知识点,这些知识点主要集中在文件的读取、写入以及流的复制等操作上。 ### Java读取文本文件 在Java中,读取文本文件通常涉及到使用`InputStream`...
利用java编程实现简单的文件复制程序,txt文件复制
在Java中,复制文件主要涉及两个关键组件:`FileInputStream`和`FileOutputStream`。`FileInputStream`用于从源文件读取数据,而`FileOutputStream`则负责将这些数据写入目标文件。以下是一个基础的文件复制方法的...
在Java编程语言中,文件复制是一项常见的操作,用于在不同的位置之间移动或备份数据。这里提供的代码示例展示了如何在Java中实现文件和目录的复制功能。以下是对这段代码的详细解析: 首先,我们导入所需的Java类:...
System.err.println("复制文件时发生错误:" + e.getMessage()); } } } ``` 在这个例子中,我们使用了try-with-resources语句,确保在复制完成后自动关闭所有打开的流,避免资源泄露。readLine()方法逐行读取...
copyFile方法用于复制文件。该方法首先判断源文件是否存在,如果不存在则返回false。如果存在,则获取待复制文件的文件名,并将其复制到目标文件夹中。在复制过程中,我们使用FileInputStream和FileOutputStream类来...
在上述代码中,`BufferedReader`的`readLine()`方法用于按顺序读取文件内容,直到文件末尾。如果文件内容较多,使用缓冲可以显著提高读取速度,因为数据会一次性读入内存,而不是每次读取一个字符。 除了`...
Java版本的NetCDF库使得开发者能够在Java环境中方便地进行NetCDF文件的读取和写入操作。 1. **NetCDF简介** - NetCDF是一种通用的数据模型,不仅定义了数据结构,还包含了元数据,用于描述数据的含义和布局。 - ...