File oldFile = new File("old");
if (oldFile.renameTo(new File("new"))){
System.out.println(oldFile.getName());//this prints "old"
}
He mirado en la fuente OpenJDK, y hay función renameTo (dest Archivo) se ve así:¿Por qué File.renameTo no cambia a dónde apunta File?
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);
}
...
}
Así que la variable de ruta no se cambia. ¿Por qué es así? ¿Cuál sería la forma correcta de usar la variable de archivo renombrada? Actualmente lo hago así:
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"
}
Lo está haciendo correctamente en su último ejemplo. – Marcelo
El archivo es un nombre inmutable de una ruta. No tiene que existir y no cambia. –