当前位置:首页 > 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-audio-recorder 或原生 Web Audio API。录音文件播放通常涉及录音、存储和播放三个核心环节。…

vue文件下载后端实现

vue文件下载后端实现

Vue 文件下载后端实现 在 Vue 项目中实现文件下载功能通常需要前后端配合。后端主要负责生成文件并提供下载接口,前端通过调用接口触发下载。以下是常见的后端实现方法(以 Node.js/Expres…

java如何删除文件

java如何删除文件

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

vue文件下载实现方式

vue文件下载实现方式

vue文件下载实现方式 使用a标签下载 通过创建a标签并设置download属性实现文件下载。适用于已知文件URL或Blob对象的情况。 // 方法1: 直接使用URL const download…

vue实现文件电子签名

vue实现文件电子签名

实现文件电子签名的基本步骤 安装依赖库 需要使用signature_pad库实现手写签名功能,通过npm或yarn安装: npm install signature_pad # 或 yarn add…

react如何新建leaa文件

react如何新建leaa文件

在React项目中新建.less文件(假设问题中的"leaa"是拼写错误,实际指.less文件)可以通过以下步骤实现: 安装less依赖 确保项目已安装less和less-loader。通过npm或…