File oldFile = new File("old");
if (oldFile.renameTo(new File("new"))){
System.out.println(oldFile.getName());//this prints "old"
}
我看過的OpenJDK源,並有renameTo(文件DEST)函數如下所示:爲什麼File.renameTo不會更改文件指向的位置?
public class File implements Serializable, Comparable<File> {
static private FileSystem fs = FileSystem.getFileSystem();
private String path;
...
public boolean renameTo(File dest) {
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkWrite(path);
security.checkWrite(dest.path);
}
return fs.rename(this, dest);
}
...
}
所以路徑變量永遠不會被改變。爲什麼?什麼是正確的方式來使用重命名的文件變量?目前我這樣做:
File oldFile = new File("/home/blin/misk/old");
File newFile = new File("/home/blin/misk/new");
if (oldFile.renameTo(newFile)){
oldFile=newFile;
System.out.println(oldFile.getName());//this prints "new"
}
你在上一個例子中正確地做了。 – Marcelo
文件是路徑的不可變名稱。它不一定存在,它不會改變。 –