当前位置: 首页 > ds >正文

除了java.nio.file.StandardCopyOption,还有哪些类可以实现文件的复制和移动?

在 Java 中,除了 java.nio.file.StandardCopyOption 配合 java.nio.file.Files 类实现文件复制和移动外,还有以下几种方式可以实现相同的功能:

1. 使用 java.io 包中的类

FileInputStream 和 FileOutputStream 实现文件复制

这两个类可以用于读取和写入文件内容,通过逐个字节或字节数组的方式将源文件的内容复制到目标文件。

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;public class FileCopyWithIO {public static void main(String[] args) {try (FileInputStream fis = new FileInputStream("source.txt");FileOutputStream fos = new FileOutputStream("target.txt")) {byte[] buffer = new byte[1024];int bytesRead;while ((bytesRead = fis.read(buffer)) != -1) {fos.write(buffer, 0, bytesRead);}System.out.println("文件复制成功");} catch (IOException e) {e.printStackTrace();}}
}

解释

  • FileInputStream 用于从源文件中读取数据。
  • FileOutputStream 用于将数据写入目标文件。
  • 使用一个字节数组 buffer 作为缓冲区,循环读取源文件的数据并写入目标文件,直到读取完所有数据。

File.renameTo() 实现文件移动

File 类的 renameTo() 方法可以将文件从一个位置移动到另一个位置,也可以用于重命名文件。

import java.io.File;public class FileMoveWithFile {public static void main(String[] args) {File source = new File("source.txt");File target = new File("target.txt");if (source.renameTo(target)) {System.out.println("文件移动成功");} else {System.out.println("文件移动失败");}}
}

解释

  • 创建 File 对象表示源文件和目标文件。
  • 调用 renameTo() 方法尝试将源文件移动到目标位置,如果操作成功返回 true,否则返回 false

2. 使用 Apache Commons IO 库

Apache Commons IO 是一个开源的 Java 库,提供了许多实用的文件操作工具类。

引入依赖

如果你使用 Maven 项目,在 pom.xml 中添加以下依赖:

<dependency><groupId>org.apache.commons</groupId><artifactId>commons-io</artifactId><version>2.11.0</version>
</dependency>

使用 FileUtils 类实现文件复制和移动
import org.apache.commons.io.FileUtils;import java.io.File;
import java.io.IOException;public class FileCopyMoveWithCommonsIO {public static void main(String[] args) {File source = new File("source.txt");File target = new File("target.txt");try {// 复制文件FileUtils.copyFile(source, target);System.out.println("文件复制成功");// 移动文件FileUtils.moveFile(source, target);System.out.println("文件移动成功");} catch (IOException e) {e.printStackTrace();}}
}

解释

  • FileUtils.copyFile() 方法用于复制文件,它会自动处理文件的读取和写入操作。
  • FileUtils.moveFile() 方法用于移动文件,它会先尝试使用 File.renameTo() 方法,如果失败则通过复制和删除操作来实现移动。

这些方法各有优缺点,java.io 包中的类是 Java 早期的文件操作方式,代码相对繁琐;java.nio.file 包提供了更简洁和高效的文件操作 API;而 Apache Commons IO 库则进一步封装了文件操作,提供了更方便的工具方法。

http://www.xdnf.cn/news/4222.html

相关文章:

  • C++动态库和静态库的生成和使用
  • linux crash工具详解
  • android-ndk开发(1): 搭建环境
  • 星途-(4)
  • 关于Python:9. 深入理解Python运行机制
  • DeepSeek技术发展详细时间轴与技术核心解析
  • ARM子程序调用与返回
  • vscode运行python的快捷键
  • VirtualBox调整虚拟机内存和CPU
  • 信息系统项目管理师-软考高级(软考高项)​​​​​​​​​​​2025最新(八)
  • 智能体四项关键技术:MCP、A2A、ANP与函数调用的深度解析
  • 判断字符是否唯一 --- 位运算
  • 《冰雪三职业》:战士玩法攻略!
  • 精益数据分析(39/126):SaaS与移动应用商业模式的关键要点剖析
  • P6822 [PA 2012 Finals] Tax 题解
  • 【项目】基于ArkTS的网吧会员应用开发(2)
  • Qt天气预报系统更新UI界面
  • ansible基础-优化
  • 代码随想录算法训练营day9:字符串part02
  • 英伟达开源英语自动语音识别模型:nvidia/parakeet-tdt-0.6b-v2
  • android zxing QrCode 库集成转竖屏适配问题
  • 餐具瓷器品牌十大排名
  • Linux安装RTL8215网卡驱动
  • FreeRTOS系统CPU使用率统计
  • AutoGPT
  • GESP2024年3月认证C++八级( 第二部分判断题(6-10))
  • 柯西乘积定理(Cauchy Product Theorem)
  • C# 反射
  • [特殊字符] 大模型(LLMs)RAG 版面分析——文本分块面
  • 农经权二轮延包软件—摸底申请表生成