当前位置:首页 > 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);

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

java如何复制文件夹及文件

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);
        }
    }
}

目录复制需要递归处理:

java如何复制文件夹及文件

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);

需要添加依赖:

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

注意事项

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

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

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

相关文章

php实现文件下载

php实现文件下载

PHP 实现文件下载的方法 使用 header() 函数强制下载 设置正确的 HTTP 头信息,强制浏览器下载文件而不是直接打开。 $file = 'path/to/file.pdf'; if (…

如何运行java文件

如何运行java文件

运行Java文件的方法 确保已安装Java Development Kit (JDK),可通过命令行输入java -version和javac -version验证安装。 编写Java代码并保存为.…

vue文件下载实现

vue文件下载实现

使用 Blob 对象下载文件 在 Vue 中可以通过创建 Blob 对象实现文件下载。通过将后端返回的二进制数据转换为 Blob,再生成下载链接触发浏览器下载行为。 axios.get('/api…

js实现文件夹

js实现文件夹

使用JavaScript创建文件夹 在浏览器端的JavaScript中无法直接操作文件系统创建文件夹,这是出于安全考虑。但在Node.js环境中可以通过文件系统模块(fs)实现。 Node.js中使…

vue实现文件进度

vue实现文件进度

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

vue实现文件拖拽下载

vue实现文件拖拽下载

Vue 实现文件拖拽下载 在 Vue 中实现文件拖拽下载功能,可以通过监听拖拽事件、处理文件数据并触发下载逻辑完成。以下是具体实现方法: 拖拽区域设置 创建一个可拖拽的区域,通常是一个 <di…