gpt4 book ai didi

Java File.renameTo(文件)不工作

转载 作者:行者123 更新时间:2023-11-30 07:23:17 24 4
gpt4 key购买 nike

我正在尝试列出目录的内容,并重命名某些文件。

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 正在考虑这些文件是“打开”,所以我认为这不是原因。我什至运行了 chmod 777 myDir,其中 myDir 是传递给 run 方法的 dirName 字符串的值.

我在这里错过了什么?为什么 Java 不重命名这些文件?这些是 CentOS 机器。

编辑:为fnewFile添加打印输出,如下:

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

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

最佳答案

您需要使用这些文件的完整 路径名创建新的File 对象。所以

String name = f.getName(); // gets the name without the directory

应该是:

String name = f.getAbsolutePath();

(您的搜索/替换可能需要更改)

关于Java File.renameTo(文件)不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12110278/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com