`
wb284551926
  • 浏览: 554059 次
文章分类
社区版块
存档分类
最新评论

Java 复制文件的高效方法(转载)

 
阅读更多

  在Java编程中,复制文件的方法有很多,而且经常要用到。我以前一直是缓冲输入输出流来实现的(绝大多数人都是如此),近来在研究JDK文档时发现,用 文件通道(FileChannel)来实现文件复制竟然比用老方法快了近三分之一。下面我就来介绍一下如何用文件通道来实现文件复制,以及在效率上的对比

  1. 用文件通道的方式来进行文件复制

        /**

        * 使用文件通道的方式复制文件

        * 

        * @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();

                }

            }

        }

  2. 与普通的缓冲输入输出流的复制效率的对比

    普通的缓冲输入输出流代码:

    测试代码:

    输出结果:

  3. 由 此可见,FileChannel复制文件的速度比BufferedInputStream/BufferedOutputStream复制文件的速度快了 近三分之一。在复制大文件的时候更加体现出FileChannel的速度优势。而且FileChannel是多并发线程安全的。

P.S.

由于本人也不是什么高手大神,只是一名普通的Java开发者,所以其中有什么不到之处,请大家多多谅解,批评指出,一起交流讨论

                                                                    VoyageLiu

                                                                    2013.12.01

原文地址:http://jingyan.baidu.com/article/ff4116259c2d7712e4823780.html

分享到:
评论

相关推荐

    java复制文件方法

    java复制文件方法,关于文件的操作,很全。

    Java文件夹复制(远程复制(网络传输),用于远程备份文件)

    Java文件夹复制功能是通过编程实现的,主要涉及到文件操作和网络通信两个核心知识点。这里有两个关键类:`FileSelection` 和 `BackupClient`。`FileSelection` 类用于选择和组织待复制的文件,而 `BackupClient` 类...

    Java文件操作一例:Copy 复制文件.rar

    Java文件操作一例:Copy 复制文件,虽然是复制文件,不过通过本源码你可以学习很多相关的Java基础技巧,比如Java对文件的事件处理、取得目录内容的事件处理、如何弹出文件选择器、如何得到选择文件的绝对路径、如何...

    java 移动文件.

    FileOperate 是一个文件操作工具类,提供了多种文件操作方法,包括新建目录、新建文件、复制文件、剪切文件等。 `public class FileOperate {` `public static void main(String args[]){` `newFolder("D:/100");` ...

    高效处理文件流 java文件

    里面包含了高效处理文件流的一个java文件,工作时总会用到 个人原创 请使用者标明作者信息 谢谢 oneRose 奉献(下载后的朋友们给点意见 谢谢)

    java实现excel表格文件的复制

    java实现excel表格文件的复制,测试可用,将excel表格的表头和内容拷贝到新表中

    java实现文件和文件夹复制

    java文件夹和文件复制,

    文件资源管理器(java)文件打开删除复制粘贴等

    对于更复杂的情况,如递归复制整个目录结构,我们需要编写自定义逻辑,遍历目录并逐个复制文件。例如,我们可以创建一个递归函数,接收源文件夹和目标文件夹作为参数,然后对源文件夹中的每个文件或子目录进行复制...

    Java实现文件复制,File文件读取,写入,IO流的读取写入

    本主题将深入探讨如何使用Java实现文件复制、File类的文件读取和写入,以及I/O流的读取与写入。下面将详细阐述这些知识点。 1. **Java文件复制** 文件复制通常涉及读取源文件内容并将其写入目标文件。在Java中,...

    java 解析 tar gz文件 两种方法

    在Java编程中,处理tar.gz文件常常用于归档和压缩大量数据。tar.gz文件是由tar命令创建的归档文件,然后通过gzip工具进行压缩。在Java中解析这种类型的文件,通常需要两个步骤:首先解压gzip,然后解包tar。这里我们...

    JAVA文件复制

    这是JAVA SE中的文件复制的代码,很多人对于文件复制不是很理解,希望通过此代码可以帮助更多的人来理解怎么是用Java语言实现文件的复制

    Java 读写文件文本文件的示例

    根据给定的文件信息,我们将深入探讨Java读写文件文本文件的关键知识点,这些知识点主要集中在文件的读取、写入以及流的复制等操作上。 ### Java读取文本文件 在Java中,读取文本文件通常涉及到使用`InputStream`...

    利用java实现文件复制

    利用java编程实现简单的文件复制程序,txt文件复制

    JAVA实现文件复制.pdf

    在Java编程语言中,文件复制是一项常见的操作,用于在不同的位置之间移动或备份数据。这里提供的代码示例展示了如何在Java中实现文件和目录的复制功能。以下是对这段代码的详细解析: 首先,我们导入所需的Java类:...

    以文件流的方式复制文件

    二、复制文件的方法 复制文件是指将源文件的内容复制到目标文件中。Java中有多种方法可以实现文件复制,包括使用文件流、BufferedReader和BufferedWriter等方式。在本例中,我们使用文件流的方式来复制文件。 三、...

    java的文件

    7. **文件复制与移动**:Java提供了一些方法来复制或移动文件。例如,可以使用Files类的copy()和move()方法,这些方法提供了原子性操作,确保在出现异常时文件状态的完整性。 8. **文件权限**:Java 7引入了Files类...

    IO流三种流方式的文本文件的复制

    System.err.println("复制文件时发生错误:" + e.getMessage()); } } } ``` 在这个例子中,我们使用了try-with-resources语句,确保在复制完成后自动关闭所有打开的流,避免资源泄露。readLine()方法逐行读取...

    Java文件剪切.pdf

    copyFile方法用于复制文件。该方法首先判断源文件是否存在,如果不存在则返回false。如果存在,则获取待复制文件的文件名,并将其复制到目标文件夹中。在复制过程中,我们使用FileInputStream和FileOutputStream类来...

    java命令行文件管理器

    复制文件和文件夹是文件管理器的核心功能。在Java中,可以使用`java.io.FileInputStream`和`java.io.FileOutputStream`配合`byte[]`数组实现文件内容的复制。而对于文件夹的复制,通常需要递归地遍历文件夹中的所有...

    java 按顺序读取文件

    在上述代码中,`BufferedReader`的`readLine()`方法用于按顺序读取文件内容,直到文件末尾。如果文件内容较多,使用缓冲可以显著提高读取速度,因为数据会一次性读入内存,而不是每次读取一个字符。 除了`...

Global site tag (gtag.js) - Google Analytics