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

Antworten auf die Frage(3)

Ihre Antwort auf die Frage