【发布时间】:2011-10-28 14:24:57
【问题描述】:
我在使用 renameTo() 时遇到了一个奇怪的问题。我不知道为什么我不能重命名为/mnt/desttest,但可以重命名为/home/kit.ho/desttest。但是,我已经将所有写入权限授予 /mnt/。返回值为假,没有具体原因。谁知道原因?
import java.io.File;
public class renameFile {
public static void main(String[] args) {
File sourceFile = new File("/home/kit.ho/test");
File targetFile1 = new File("/mnt/desttest");
System.out.println("source file is exist? " + sourceFile.exists() + ", source file => " + sourceFile);
System.out.println(targetFile1 + " is exist? " + targetFile1.exists());
System.out.println("rename to " + targetFile1 + " => " + sourceFile.renameTo(targetFile1));
System.out.println("source file is exist? " + sourceFile.exists() + ", source file => " + sourceFile);
}
}
编辑: 最后,根据一些答案,重命名功能不适用于跨文件系统,是否可以通过不调用“mv”等外部命令来解决此问题?
【问题讨论】:
-
/mnt是单独的分区吗? -
你能
mv /home/kit.ho/test /mnt/desttest没有问题吗? -
@Mechanical: 是的 /mnt 在单独的分区上。
-
我不想使用外部进程重命名文件
-
@Kit Ho:你没有重命名文件;您正在跨分区移动它。