// File (or directory) to be moved
File file = new File("filename");
// Destination directory
File dir = new File("directoryname");
// Move file to new directory
boolean success = file.renameTo(new File(dir, file.getName()));
if (!success) {
// File was not successfully moved
//can it be because file with file name already exists in destination?
}
如果目的地中已存在名称为'filename'的文件,则会将其替换为新文件吗?
答案 0 :(得分:10)
根据Javadoc:
此方法行为的许多方面本质上是依赖于平台的:重命名操作可能无法将文件从一个文件系统移动到另一个文件系统,它可能不是原子的,并且如果目标抽象路径名已存在的文件,则可能无法成功。应始终检查返回值以确保重命名操作成功。
答案 1 :(得分:2)
来自Javadoc:
重命名操作可能无法执行 将文件从一个文件系统移动到 另外,它可能不是原子的,而且 如果一个文件有,它可能不会成功 目标抽象路径名 已经存在。
我测试了以下代码:
它第一次运行,第二次按预期失效。 要移动文件,您应该删除或重命名目标。
public class Test {
public static void main(String[] args) throws IOException {
File file = new File( "c:\\filename" );
file.createNewFile();
File dir = new File( "c:\\temp" );
boolean success = file.renameTo( new File( dir, file.getName() ) );
if ( !success ) {
System.err.println( "succ:" + success );
}
}
}
答案 2 :(得分:0)
因为它是系统相关的你不应该期望它以这种或其他方式行事。检查并实现自己的逻辑。