Java File.renameTo (File) funktioniert nicht
Ich versuche, den Inhalt eines Verzeichnisses aufzulisten und bestimmte Dateien umzubenennen.
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());
}
}
Wenn ich das starte, bekomme ich "Tried to change file name but couldn't.
" Ich nichtglauben dass Java diese Dateien als "offen" ansieht, deshalb glaube ich nicht, dass das der Grund ist. Ich bin sogar geranntchmod 777 myDir
wohermyDir
ist der Wert derdirName
Zeichenfolge übergeben in dierun
Methode.
Was vermisse ich hier? Warum benennt Java diese Datei (en) nicht um? Dies sind CentOS-Maschinen.
Bearbeiten: Für beide wurden Ausdrucke hinzugefügtf
undnewFile
, was wie folgt ist:
f is:
/root/path/to/mydir/test�.txt
newFile is:
/root/path/to/mydir/test_.txt