ディレクトリの内容を一覧表示し、特定のファイルの名前を変更しようとしています。
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());
}
}
これを実行すると、「 Javaがこれらのファイルを「開いている」と見なしているとは思わTried to change file name but couldn't.
ないので、それが理由ではないと思います。メソッドに渡された文字列の値がどこにあるかを実行したこともあります。chmod 777 myDir
myDir
dirName
run
ここで何が欠けていますか?Javaがこれらのファイルの名前を変更しないのはなぜですか?これらはCentOSマシンです。
編集f
:との両方のプリントアウトを追加しましnewFile
た。これは次のとおりです。
f is:
/root/path/to/mydir/test�.txt
newFile is:
/root/path/to/mydir/test_.txt