行业资讯 2025年08月6日
0 收藏 0 点赞 762 浏览 2425 个字
摘要 :

文章目录 1.使用File.renameTo() 2.新IO中的Files.move() 3.Guava中的Files.move() 4.Commons IO中的FileUtils 5.结论 学会在Java中将文件或目录重命名为指定路径或移……




  • 1.使用File.renameTo()
  • 2.新IO中的Files.move()
  • 3.Guava中的Files.move()
  • 4.Commons IO中的FileUtils
  • 5.结论

学会在Java中将文件目录重命名为指定路径或移动到新目录。我们将学习如何使用标准IO、新IO、Guava和Commons IO中的类。

1.使用File.renameTo()

如方法名所示,renameTo() 重命名文件为新名称或将文件移动到新目录位置。

  • renameTo() 返回true或false,表示重命名是否成功。
  • 如果旧文件或新文件存在写访问问题,则会抛出SecurityException异常。
File originalFile = new File(\"c:/temp/demo.txt\");
File renamedFile = new File(\"c:/temp/demoNew.txt\");
File movedFile = new File(\"c:/temp/moved/demoNew.txt\");
boolean isCopied = originalFile.renameTo(renamedFile);
boolean isMoved = renamedFile.renameTo(movedFile);
System.out.println(isCopied);    //true
System.out.println(isMoved);    //true

2.新IO中的Files.move()

Files.move() 类似于renameTo(),不同之处在于它使用Path实例而不是File实例。

  • move() 方法将文件移动或重命名为目标文件。如果支持,移动文件将复制最后修改时间到目标文件。
  • 如果给定的文件和目标文件相同,则此方法不会产生任何效果。
  • 如果目标文件已存在,则move() 将失败。在这种情况下,我们可以使用StandardCopyOption.REPLACE_EXISTING选项。
  • 要将整个重命名或移动操作作为单个原子操作执行,我们可以使用StandardCopyOption.ATOMIC_MOVE选项。如果无法将移动操作作为原子文件系统操作执行(例如在两个不同的文件系统中),则会抛出AtomicMoveNotSupportedException异常。
  • 如果文件是一个符号链接,那么移动的是符号链接本身,而不是链接的目标。
  • 重命名目录可能会失败,如果需要将文件移动到新位置,即目录正在移动到一个位置。如果只是在文件系统中的相同位置对目录进行简单的重命名,那么它将成功。
Path file = Path.of(\"c:/temp/demo.txt\");
//在同一目录中重命名
Files.move(file, file.resolveSibling(\"demoNew.txt\"));
//移动到新的目录
Path newDir = Path.of(\"c:/temp/moved/\");
Files.move(file, newDir.resolve(file.getFileName()),
    StandardOption.ATOMIC_MOVE,
    StandardCopyOption.REPLACE_EXISTING);

3.Guava中的Files.move()

这个Files.move() 方法将文件从一个路径移动到另一个路径。这适用于重命名和移动两种操作。

我们要小心,目标路径必须是文件自身的目标路径;而不仅仅是文件的新名称或新父目录的路径。

File originalFile = new File(\"c:/temp/demo.txt\");
File renamedFile = new File(\"c:/temp/demoNew.txt\");
com.google.common.io.Files.move(originalFile, renamedFile);
com.google.common.io.Files.move(renamedFile, movedFile);

4.Commons IO中的FileUtils

FileUtils类提供了许多根据需求移动或重命名文件和目录的方法。

  • moveDirectory(File srcDir, File destDir) – 将目录移动到目标位置并删除源目录。
  • moveDirectoryToDirectory(File src, File destDir, boolean createDestDir) : 将一个目录移动到另一个目录,并提供一个选项来创建新目录或不创建。如果createDestDir为false且无法创建新目录,则将抛出IOException。 moveFile(File srcFile, File destFile, CopyOption… copyOptions) : 移动文件并保留文件属性,可以选择使用可选的复制选项。
  • moveFileToDirectory(File srcFile, File destDir, boolean createDestDir) : 将文件移动到指定目录。
  • moveToDirectory(File src, File destDir, boolean createDestDir) : 将文件或目录移动到目标目录。
FileUtils.moveFile(originalFile, renamedFile);
File targetDirectory = new File(\"c:/temp/moved/\");
FileUtils.moveFileToDirectory(originalFile, targetDirectory, true);

5.结论

在这个简短的教程中,我们学会了如何使用不同的复制选项来重命名文件或目录,或将其移动到新位置。

尽管标准IO和新IO类提供了各种功能,但Common IO中的FileUtils类为每种操作提供了非常具体的方法。这些具体的方法名称非常清晰地传达了意图。

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/9449.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

988
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

465
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

348
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

456
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

517
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

832
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号