`

在java中高效复制一个文件夹里面所有的内容

 
阅读更多


先看下传统的方法:利用字节流直接复制

public static void copy(File[] fl, File file) {
    if (!file.exists()) // 如果文件夹不存在
        file.mkdir(); // 建立新的文件夹
    for (int i = 0; i < fl.length; i++) {
        if (fl[i].isFile()) { // 如果是文件类型就复制文件
            try {
                FileInputStream fis = new FileInputStream(fl[i]);
                FileOutputStream out = new FileOutputStream(new File(file
                        .getPath()
                        + File.separator + fl[i].getName()));
               
                int count = fis.available();
                byte[] data = new byte[count];
                if ((fis.read(data)) != -1) {
                    out.write(data); // 复制文件内容
                }
                out.close(); // 关闭输出流
                fis.close(); // 关闭输入流
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        if (fl[i].isDirectory()) { // 如果是文件夹类型
            File des = new File(file.getPath() + File.separator
                    + fl[i].getName());
            des.mkdir(); // 在目标文件夹中创建相同的文件夹
            copy(fl[i].listFiles(), des); // 递归调用方法本身
        }
    }


(f1输入文件夹,file是输出文件夹)
看看比较高效的方法,利用文件通道(FileChannel)来实现,可以节省1/3的时间。

看看代码:(这是文件的复制)
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();

            }

        }

    }
分享到:
评论

相关推荐

    读取文件夹中所有文件中的内容

    例如,在进行数据分析、日志处理或批量文件操作时,可能需要读取一个文件夹下所有的文件内容并对这些内容进行一定的处理。Java作为一种广泛使用的编程语言,提供了丰富的API来帮助开发者实现这样的需求。 #### 关键...

    java合并两个文件夹内容

    标题"java合并两个文件夹内容"指出我们要做的是将一个文件夹的所有内容(包括子文件夹和文件)复制到另一个文件夹,并且如果目标文件夹存在同名文件,需要覆盖它。这个过程可以通过递归遍历源文件夹并逐个复制文件来...

    java实现一个目录下全部文件复制到另一目录

    在Java编程语言中,复制一个目录下的所有文件到另一个目录是一项常见的任务,特别是在处理文件系统操作时。这个过程涉及到文件的遍历、读取和写入。以下将详细讲解如何实现这一功能,以及相关的Java API和技术点。 ...

    运用java压缩文件夹并备份至目标文件夹

    在这个例子中,`addFolderToZip`方法递归地遍历文件夹中的所有文件,创建对应的`ZipEntry`对象,并将文件内容写入`ZipOutputStream`。注意,为了保持文件结构,我们需要将文件路径转换为相对路径(`prefix + path....

    java文件夹的拷贝

    而在`java.nio`中,`Files.copy()`方法提供了一种简洁的方式,可以方便地完成文件的复制,包括从一个位置到另一个位置的本地文件复制。 ```java try (InputStream in = new FileInputStream(source); ...

    遍历文件夹中的路径复制目录文件.rar

    总的来说,这个压缩包里的Java程序可能是一个实用工具,用于高效且方便地复制整个目录结构,同时提供可视化的输出反馈。理解并运用这些Java文件操作的原理,对于进行文件系统操作的开发者来说是非常重要的。

    java递归实现复制一个文件夹下所有文件功能

    在Java递归实现复制文件夹下所有文件功能中,我们可以使用递归算法来遍历文件夹下的所有文件和文件夹,然后使用FileInputStream和FileOutputStream来复制文件。下面是一个简单的示例代码: ```java void myCopy...

    java简单的文件复制粘贴

    以下是一个简单的 Java 文件复制粘贴示例代码: ```java package com.util; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; public class FileCopy { ...

    Java基于Minio的个人在线文件夹源码.zip

    【标题】"Java基于Minio的个人在线文件夹源码.zip"揭示了这是一个使用Java编程语言,结合Minio服务构建的个人在线文件存储和共享应用的源代码项目。Minio是一个开源的对象存储服务器,适用于云存储场景,尤其适合于...

    java文件复制(全)

    在Java编程中,文件复制是一项基础且常见的任务,无论是在日常开发还是系统集成中都扮演着重要角色。本文将深入探讨如何使用Java实现文件的复制,包括单个文件的复制和整个文件夹及其子文件的复制。 首先,我们来看...

    java对文件的复制和删除(文件夹、文件)

    在这个场景中,我们看到一个名为"OperateFile"的压缩包文件,它很可能包含了一个Java类或者一个项目,用于演示如何使用Java来执行这些操作。下面将详细讨论Java中文件复制和删除的关键知识点,以及可能用到的相关API...

    复制文件和文件夹

    在IT领域,复制文件和文件夹是日常工作中非常常见的操作,尤其对于开发者来说,了解如何高效、正确地实现这一功能至关重要。在这个小程序中,我们可能会看到如何利用编程语言的内置函数或者自定义方法来实现这一目标...

    编写一个java应用程序,将一个包含多个子目录和文件的目录复制到另外一个指定的目录下

    在Java编程中,复制一个包含多个子目录和文件的目录是一项常见的任务,主要涉及文件操作和目录遍历。以下是如何实现这个功能的关键知识点: 1. **文件和目录操作**:Java中的`java.io`包提供了处理文件和目录的类,...

    java 文件夹浏览器

    "Java 文件夹浏览器"是一个基于Java编程语言开发的实用工具,它允许用户浏览和操作本地文件系统中的文件和目录。这个工具可能包含了源代码,因此对于开发者来说,它是一个学习和参考的好资源,特别是对那些想要了解...

    多文件夹/文件的合并软件及源代码(Java)

    而文件夹合并则可能包括将两个或更多文件夹内的所有内容(包括子文件夹和文件)整合到一个新文件夹中。这种操作在数据备份、归档或项目整合时非常有用。 **2. Java API中的文件操作** Java标准库提供了一系列API来...

    文件及文件夹复制

    在复制文件夹时,需确保目标文件夹不在源文件夹的子目录中,以防止造成无限循环的错误情况,这在Windows系统下尤为显著。 #### Java中的文件复制实现 Java提供了一系列强大的API来处理文件和流,使得文件复制变得...

    java编写的命令行文件/文件夹管理程序

    Java编写的命令行文件/文件夹管理程序是一个实用工具,它允许用户通过命令行界面执行常见的文件操作。这种程序在开发、系统管理或者需要高效批量处理文件的场景中非常常见。下面将详细介绍这个程序可能涉及的主要...

    文件夹同步

    文件夹同步是一个重要的IT概念,尤其对于频繁处理文档和教育资源的人来说,它是一种高效的数据管理和备份策略。本文将深入探讨文件夹同步的原理、优势、常用软件以及如何利用FreeFileSync进行同步操作。 文件夹同步...

    java源码包---java 源码 大量 实例

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

Global site tag (gtag.js) - Google Analytics