当前位置:首页 > Java

java如何复制文件夹及文件

2026-02-05 11:09:53Java

使用 Files.copy 方法(Java NIO)

Java NIO 的 Files.copy 方法适合复制单个文件或空文件夹。对于非空文件夹,需递归处理子目录和文件。

import java.nio.file.*;

public static void copyFolder(Path source, Path target) throws IOException {
    Files.walk(source).forEach(srcPath -> {
        try {
            Path destPath = target.resolve(source.relativize(srcPath));
            Files.copy(srcPath, destPath, StandardCopyOption.REPLACE_EXISTING);
        } catch (IOException e) {
            e.printStackTrace();
        }
    });
}

使用 Apache Commons IO 库

Apache Commons IO 的 FileUtils.copyDirectory 方法提供了更简洁的解决方案,需添加依赖:

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.11.0</version>
</dependency>

代码示例:

import org.apache.commons.io.FileUtils;

FileUtils.copyDirectory(new File("sourcePath"), new File("targetPath"));

递归手动实现

若需不依赖第三方库,可手动实现递归复制:

import java.io.*;

public static void copyFolder(File source, File target) throws IOException {
    if (source.isDirectory()) {
        if (!target.exists()) target.mkdir();
        for (String file : source.list()) {
            copyFolder(new File(source, file), new File(target, file));
        }
    } else {
        try (InputStream in = new FileInputStream(source);
             OutputStream out = new FileOutputStream(target)) {
            byte[] buffer = new byte[1024];
            int length;
            while ((length = in.read(buffer)) > 0) {
                out.write(buffer, 0, length);
            }
        }
    }
}

注意事项

  • 目标文件夹需有写入权限。
  • 大文件建议使用缓冲流(如 BufferedInputStream)。
  • 符号链接需特殊处理,避免无限递归。
  • Java 7+ 推荐 NIO 方式,性能更优。

java如何复制文件夹及文件

标签: 文件夹文件
分享给朋友:

相关文章

vue实现文件模板展示

vue实现文件模板展示

Vue 实现文件模板展示的方法 在 Vue 中实现文件模板展示功能,可以通过多种方式完成。以下是几种常见的实现方法: 使用动态组件 动态组件允许根据条件切换不同的模板组件。通过 :is 属性绑…

php实现文件下载

php实现文件下载

PHP实现文件下载的方法 通过PHP实现文件下载功能,可以采用多种方式,以下是几种常见的实现方法: 使用header()函数强制下载 设置HTTP头信息,强制浏览器下载文件而非直接打开:…

java如何删除文件

java如何删除文件

删除文件的基本方法 使用 java.io.File 类的 delete() 方法可以删除文件。如果文件存在且删除成功,返回 true;否则返回 false。 import java.io…

vue实现文件预览

vue实现文件预览

Vue 实现文件预览的方法 文件预览功能通常涉及图片、PDF、Office文档等多种格式的处理。以下是几种常见文件类型的实现方案: 图片预览 使用 <input type="file">…

vue实现搜索文件

vue实现搜索文件

Vue 实现搜索文件功能 在 Vue 中实现文件搜索功能,可以通过以下步骤完成。这里假设文件数据存储在本地或通过 API 获取。 数据准备 确保有一个文件列表数据,可以是静态数据或从后端 API…

vue实现文件进度

vue实现文件进度

Vue 实现文件上传进度 使用 Vue 实现文件上传进度可以通过结合 axios 或原生 XMLHttpRequest 的进度事件来实现。以下是两种常见方法: 使用 axios 上传文件并显示进度…