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

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高效文件复制.txt

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

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

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

    java文件复制(全)

    本文将深入探讨如何使用Java实现文件的复制,包括单个文件的复制和整个文件夹及其子文件的复制。 首先,我们来看一个简单的Java程序,用于复制单个文件。这个例子中,我们将使用`java.io`包中的`...

    文件复制(java代码实现)

    在Java编程语言中,文件复制是一项常见的任务,用于在不同位置之间移动或备份数据。本文将详细介绍如何在Java中实现文件复制,同时考虑到输入输出异常处理,并在DOS控制台环境中运行程序。 首先,我们需要创建一个...

    java复制树结构数据方法

    自己写的一个 用java代码复制树形结构数据的方法 很实用 希望对有需求的朋友给予帮助

    java文件复制小程序

    用户输入原始文件地址。。。然后输入要复制到的目录。

    java 实现文件复制 源码

    实现简单的文件复制功能,适合java入门学习 输入输出部分

    java实现文件和文件夹复制

    java文件夹和文件复制,

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

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

    Java写入文件、读取文件,复制、追加、修改文件最后修改时间、时间格式转换、查看端口使用情况

    Java写入文件、读取文件,复制、追加、修改文件最后修改时间、时间格式转换、查看端口使用情况

    java 解析 tar gz文件 两种方法

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

    JAVA实现文件复制.pdf

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

    以文件流的方式复制文件

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

    java写的文件复制,不指定文件,文件自己选择

    java写的文件复制,不指定文件,文件自己选择

    使用java代码替换zip内的文件.docx

    这种方法减少了磁盘空间的占用,提高了处理效率,特别适用于处理大文件或需要高效操作ZIP文件的场景。在实际开发中,根据具体需求,可以进一步优化这个代码,比如添加错误处理机制,或者支持替换多个文件。

    java复制一个文件到另一文件包内

    java复制一个文件到另一文件包内.wps

    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