Java File.renameTo (File) nie działa
Próbuję wyświetlić zawartość katalogu i zmienić nazwy niektórych plików.
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());
}
}
Kiedy to uruchomię, dostaję „Tried to change file name but couldn't.
" Ja nieuwierzyć że Java uważa te pliki za „otwarte”, więc nie sądzę, żeby to był powód. Nawet pobiegłemchmod 777 myDir
gdziemyDir
jest wartościądirName
ciąg przekazany dorun
metoda.
Czego mi tu brakuje? Dlaczego Java nie zmienia nazw tych plików? To są maszyny CentOS.
Edytować: Dodano wydruki dla obuf
inewFile
, co jest następujące:
f is:
/root/path/to/mydir/test�.txt
newFile is:
/root/path/to/mydir/test_.txt