当前位置:首页 > Java

java如何复制文件夹及文件

2026-03-03 22:27:00Java

Java 复制文件夹及文件的方法

Java 提供了多种方式实现文件夹及文件的复制操作,以下是几种常见的方法:

使用 Files.copy() 方法(Java 7+)

适用于简单文件复制,支持 NIO(非阻塞 I/O)操作:

Path sourcePath = Paths.get("source/file.txt");
Path targetPath = Paths.get("target/file.txt");
Files.copy(sourcePath, targetPath, StandardCopyOption.REPLACE_EXISTING);

对于目录复制需要递归处理:

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

使用传统 IO 流方式

适用于所有 Java 版本的文件复制:

public static void copyFile(File source, File dest) throws IOException {
    try (InputStream is = new FileInputStream(source);
         OutputStream os = new FileOutputStream(dest)) {
        byte[] buffer = new byte[1024];
        int length;
        while ((length = is.read(buffer)) > 0) {
            os.write(buffer, 0, length);
        }
    }
}

目录复制需要递归处理:

public static void copyDirectory(File sourceDir, File destDir) throws IOException {
    if (!destDir.exists()) {
        destDir.mkdir();
    }
    for (File file : sourceDir.listFiles()) {
        if (file.isDirectory()) {
            copyDirectory(file, new File(destDir, file.getName()));
        } else {
            copyFile(file, new File(destDir, file.getName()));
        }
    }
}

使用 Apache Commons IO 库

简化操作,适合复杂场景:

// 单文件复制
FileUtils.copyFile(srcFile, destFile);

// 目录复制
FileUtils.copyDirectory(srcDir, destDir);

需要添加依赖:

java如何复制文件夹及文件

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

注意事项

  • 目标目录需要先创建
  • 大文件建议使用缓冲流
  • 注意处理文件权限问题
  • 考虑使用多线程提升大批量文件复制效率

以上方法可根据具体需求选择,NIO 方式性能较好,传统 IO 兼容性更广,第三方库则提供了更简洁的 API。

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

相关文章

实现.vue文件

实现.vue文件

创建Vue单文件组件 Vue单文件组件(.vue文件)是Vue.js框架的核心特性之一,它将模板、脚本和样式封装在一个文件中。一个典型的.vue文件结构包含三个部分:<template>、…

php 实现文件下载

php 实现文件下载

实现文件下载的基本方法 使用 PHP 实现文件下载的核心是通过设置 HTTP 头部信息,强制浏览器将文件作为附件下载而非直接显示。以下是一个基础实现示例: $file_path = '/path/t…

如何编译java文件

如何编译java文件

安装JDK 确保系统已安装Java Development Kit(JDK)。可通过命令行输入 javac -version 和 java -version 验证。若未安装,需从Oracle或Open…

java如何删除文件

java如何删除文件

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

vue实现文件导入

vue实现文件导入

文件导入的基本实现 在Vue中实现文件导入通常通过HTML的<input type="file">元素结合File API完成。创建一个文件选择组件,监听change事件获取用户选择的文件…

vue 实现文件地址

vue 实现文件地址

Vue 实现文件下载功能 在Vue中实现文件下载功能通常可以通过前端直接触发下载或通过后端API返回文件流。以下是几种常见方法: 前端直接下载(适用于公开URL) 对于已知的公开文件URL,可以直接…