Java File.renameTo (File) no funciona
Estoy tratando de listar el contenido de un directorio y renombrar ciertos archivos.
public void run(String dirName) {
try {
File parDir = new File(dirName);
File[] dirContents = parDir.listFiles();
// Rename if necessary
for(File f : dirContents) {
System.out.println("f is:\n" + f.toString());
String name = f.getName();
String subbedName = name.replaceAll("\uFFFD", "_");
System.out.println("\n" + "name = " + name + ", subbedName = " + subbedName + "\n");
if(!name.equals(subbedName)) {
File newFile = new File(f.getParentFile(), subbedName);
System.out.println("newFile is:\n" + newFile.toString());
if(!f.renameTo(newFile))
System.out.println("Tried to change file name but couldn't.");
}
}
}
catch(Exception exc1) {
System.out.println("Something happened while listing and renaming directory contents: " + exc1.getMessage());
}
}
Cuando corro esto, me sale "Tried to change file name but couldn't.
" Yo nocreer que Java considera que estos archivos están "abiertos", así que no creo que esa sea la razón. Incluso he corridochmod 777 myDir
dóndemyDir
es el valor de ladirName
cadena pasó a larun
método.
¿Que me estoy perdiendo aqui? ¿Por qué Java no cambiará el nombre de estos archivos? Estas son máquinas CentOS.
Editar: Se agregaron impresiones para ambosf
ynewFile
, que es el siguiente:
f is:
/root/path/to/mydir/test�.txt
newFile is:
/root/path/to/mydir/test_.txt