在 Java 中,移动文件(或目录)位置通常有几种常见方式,取决于你使用的 Java 版本和是否跨文件系统。
Files.move)最推荐、最简洁、最安全
import java.nio.file.*;
public class MoveFileExample {
public static void main(String[] args) throws Exception {
Path source = Paths.get("D:/test/a.txt");
Path target = Paths.get("D:/test2/a.txt");
// 如果目标文件已存在,先删除
Files.move(source, target, StandardCopyOption.REPLACE_EXISTING);
}
}
StandardCopyOption.REPLACE_EXISTING:目标存在时覆盖StandardCopyOption.ATOMIC_MOVE:原子移动(适合日志、锁文件)Files.move(source, target, StandardCopyOption.ATOMIC_MOVE);
✅ 优点:
File.renameTo)⚠️ 不推荐(跨平台不稳定)
File source = new File("D:/test/a.txt");
File target = new File("D:/test2/a.txt");
boolean success = source.renameTo(target);
if (!success) {
System.out.println("移动失败");
}
❌ 问题:
当 Files.move 不支持时(如特殊设备、权限问题)
Files.copy(source, target, StandardCopyOption.REPLACE_EXISTING);
Files.deleteIfExists(source);
Files.move 可以直接移动目录(空或非空均可,同磁盘)
Files.move(
Paths.get("D:/oldDir"),
Paths.get("E:/newDir"),
StandardCopyOption.REPLACE_EXISTING
);
Files.createDirectories(target.getParent());
| 场景 | 推荐方式 |
|---|---|
| 一般情况 | Files.move |
| 原子操作 | ATOMIC_MOVE |
| 兼容老代码 | renameTo(不推荐) |
如果你有具体场景(如:跨盘、Spring、Android、大文件),可以告诉我,我给你写完整示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。