Java实现文件或文件夹的复制到指定目录实例

Java 实现文件或文件夹的复制到指定目录可以使用 NIO 的 Files 类,以下是实现一份文件的复制到目标文件夹的代码示例。

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class FileCopyDemo {

    public static void main(String[] args) throws IOException {
        String sourceFilePath = "source.txt"; // 源文件路径
        String targetDirPath = "target"; // 目标目录路径

        // 1. 检查目标目录是否存在,不存在则创建
        if (!Files.exists(Paths.get(targetDirPath))) {
            Files.createDirectories(Paths.get(targetDirPath));
        }

        // 2. 拼接目标文件路径
        Path sourcePath = Paths.get(sourceFilePath);
        String targetFilePath = targetDirPath + File.separator + sourcePath.getFileName();

        // 3. 复制文件到目标文件夹
        Files.copy(sourcePath, Paths.get(targetFilePath), StandardCopyOption.REPLACE_EXISTING);
    }

}

具体过程如下:

  1. 创建源文件的路径与目标目录的路径;
  2. 判断目标目录是否存在,不存在则创建;
  3. 解析源文件路径,获取文件名,为目标文件拼接路径,使用 Files.copy 方法完成文件复制操作。

如果要实现文件夹的复制,则需要使用递归遍历实现;以下示例实现从源文件夹复制到目标文件夹的代码:

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;

public class FolderCopyDemo {

    public static void main(String[] args) throws IOException {
        String sourceFolderPath = "source"; // 源文件夹路径
        String targetFolderPath = "target"; // 目标文件夹路径

        // 1. 检查目标目录是否存在,不存在则创建
        if (!Files.exists(Paths.get(targetFolderPath))) {
            Files.createDirectories(Paths.get(targetFolderPath));
        }

        // 2. 遍历源文件夹中的所有文件和子文件夹,并复制到目标文件夹
        Files.walk(Paths.get(sourceFolderPath)).forEach(sourcePath -> {
            String targetPath = sourcePath.toString().replace(sourceFolderPath, targetFolderPath);
            try {
                if (Files.isDirectory(sourcePath)) {
                    Files.createDirectories(Paths.get(targetPath));
                } else {
                    Files.copy(sourcePath, Paths.get(targetPath), StandardCopyOption.REPLACE_EXISTING);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        });
    }

}

代码实现过程如下:

  1. 创建源文件夹路径与目标文件夹路径;
  2. 如果目标文件夹不存在,则创建;
  3. 使用 Files.walk 遍历源文件夹中的所有文件及子文件夹,使用 Files.copy 来复制文件或文件夹到目标文件夹,如果当前正在处理的是一个子文件夹,则需要在目标文件夹中创建对应文件夹。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java实现文件或文件夹的复制到指定目录实例 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • Java Web监听器Listener接口原理及用法实例

    下面是针对“Java Web监听器Listener接口原理及用法实例”的完整攻略。 Listener接口原理 Listener是Java Web中用于监听某些事件的接口。它是一种观察者模式,可以用于处理请求和响应中的事件。其原理如下: Listener是一个接口,实现了多种不同类型的监听器。 监听器必须由开发者实现和注册在相应的事件中(例如:初始化、请求、会…

    Java 2023年6月15日
    00
  • Java 网络编程 —— 创建多线程服务器

    一个典型的单线程服务器示例如下: while (true) { Socket socket = null; try { // 接收客户连接 socket = serverSocket.accept(); // 从socket中获得输入流与输出流,与客户通信 … } catch(IOException e) { e.printStackTrace() } …

    Java 2023年5月3日
    00
  • jsp中page指令用法详解

    下面是 “jsp中page指令用法详解”的完整攻略。 什么是Page指令? Page指令是JSP页面的一个必需元素。它告诉JSP引擎关于JSP页面的特定信息。Page指令以<%@ page %>的格式来表示。 Page指令的属性 Page指令有以下属性: language:指定JSP页面所使用的脚本语言。默认为Java。例如:language=”…

    Java 2023年6月15日
    00
  • springmvc处理异步请求的示例

    在 Spring MVC 中,我们可以使用异步请求来提高 Web 应用的性能和响应速度。本文将详细讲解 Spring MVC 处理异步请求的示例,包括如何使用 @ResponseBody 注解和 DeferredResult 类,并提供两个示例说明。 使用 @ResponseBody 注解 在 Spring MVC 中,我们可以使用 @ResponseBod…

    Java 2023年5月18日
    00
  • springboot整合shiro多验证登录功能的实现(账号密码登录和使用手机验证码登录)

    SpringBoot整合Shiro多验证登录功能的实现 SpringBoot是一个快速开发Spring应用的框架,而Shiro可以方便的实现安全认证和授权,两者结合,可以非常方便的实现多验证登录功能。 SpringBoot集成Shiro 首先需要添加Shiro和SpringBoot的依赖。 <dependency> <groupId>…

    Java 2023年5月20日
    00
  • spring boot整合Shiro实现单点登录的示例代码

    下面是关于“spring boot整合Shiro实现单点登录的示例代码”的详细攻略。 环境准备 首先,我们需要准备以下环境: JDK 8 Maven IDE:Eclipse 或者 Intellij IDEA 在环境准备完成后,我们接下来需要进行以下的准备工作。 创建Spring Boot工程 我们可以通过Maven快速构建一个Spring Boot应用程序,…

    Java 2023年6月15日
    00
  • Spring Boot2+JPA之悲观锁和乐观锁实战教程

    下面我就为您讲解Spring Boot2 + JPA悲观锁和乐观锁实战教程的完整攻略。 1. 悲观锁实战 1.1 悲观锁的概念 悲观锁是指,当在执行某一操作时,认为别的并发操作会对其产生影响,因此在执行前进行加锁,使得其他并发操作无法操作,直到该操作完成释放锁。 1.2 悲观锁的实现 在JPA中,实现悲观锁可以通过 @Lock 注解来实现。具体实现方法如下:…

    Java 2023年5月20日
    00
  • Java @Value(“${xxx}”)取properties时中文乱码的解决

    当我们使用Java中的注解@Value(“${xxx}”)来读取.properties配置文件中的中文值时,很容易出现中文乱码的问题。下面是针对这个问题的完整攻略。 步骤一:配置文件 首先,需要在项目中添加一个.properties配置文件,用于存放需要读取的配置属性。例如,我们可以在项目中添加一个config.properties文件,其内容如下: # 中…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部