Java File.renameTo (File) não está funcionando

Estou tentando listar o conteúdo de um diretório e renomear certos arquivos.

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());
    }
}

Quando eu corro isso, eu recebo "Tried to change file name but couldn't." Eu nãoacreditam que o Java está considerando esses arquivos como "abertos", então não acho que essa seja a razão. Eu até corrichmod 777 myDir OndemyDir é o valor dodirName corda passada para orun método.

O que estou perdendo aqui? Por que o Java não renomeia esses arquivos? Estas são máquinas CentOS.

Editar: Impressões adicionadas para ambosf enewFile, que é o seguinte:

f is:
/root/path/to/mydir/test�.txt

newFile is:
/root/path/to/mydir/test_.txt

questionAnswers(3)

yourAnswerToTheQuestion