Почему file.ruetaMeto не изменится, где файл точек?

File oldFile = new File("old");
if (oldFile.renameTo(new File("new"))){
    System.out.println(oldFile.getName());//this prints "old"
}

Я посмотрел на источник OpenJDK, и там функция Renameto (File DEST) выглядит так:

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"
}
16
задан Blin 6 September 2011 в 13:08
поделиться