java - 重命名包含 Java 内容的目录的最简单方法是什么?
问题描述
File
的renameTo
方法仅在目录为空时有效。除了创建一个新目录并将旧目录的内容复制到其中之外,最简单的方法是什么?
解决方案
File
的renameTo
方法仅在目录为空时有效。
那是不正确的。
证明
new File("x").mkdir();
new File("x\\file.txt").createNewFile();
new File("x").renameTo(new File("y"));
System.out.println(Arrays.toString(new File(".").list()));
System.out.println(Arrays.toString(new File("y").list()));
new File("y\\file.txt").delete();
new File("y").delete();
输出(在 Windows 上运行)
[.classpath, .project, .settings, lib, pom.xml, src, target, y]
[file.txt]
可以看出,该文件夹x
已重命名为y
,即使其中有一个名为的文件file.txt
。
更新
但是,您应该使用较新的Files.move(Paths.get("x"), Paths.get("y"))
而不是new File("x").renameTo(new File("y"))
.
与renameTo
仅false
在失败时返回的 不同,该Files.move
方法将抛出异常来解释失败的原因。
由于您可能甚至没有检查renameTo
(如上面的代码没有)的返回值,因此新方法有助于防止静默忽略失败。
推荐阅读
- php - 在 woo-commerce 默认电子邮件功能中添加修改
- sql-server - 两个月前的数据
- c# - 连接字符串的密码
- php - 单击按钮时,Codeigniter 不会将输入表单重定向到仪表板
- jquery - WooCommerce jQuery 在页面上工作,但不在相同按钮的弹出窗口中
- spring - Spring Boot REST - 使用 OData 从 Microsoft Dynamics NAV 中提取数据
- python - 如何在python中数值求解差分方程
- python - 用于列出基于选择日期创建的 EBS 快照的 python 脚本
- arrays - Angular 5:根据属性获取数组的所有对象
- react-native - 在 create-react-native-app 项目中突然看到错误“插件/预设文件不允许导出对象,只有功能”