重命名文件时出错

Error in Renaming Files

虽然这里有很多问题涉及命名文件的错误,但下面的代码试图实现这些示例,但没有明显的原因无法实际更改系统中的文件名。

public static void main(String[] args)
{
    File dir = new File("E:/Vglut2 pharmacology/60730/");
    File[] directoryListing = dir.listFiles();
    for (File filius : directoryListing) {
        try
        {
            String oldName = filius.getName();
            int imgNum = returnImageNumber(oldName);
            double imgMag = returnImageMagnification(oldName);
            String newName = oldName.substring(0, oldName.indexOf('_')).concat('_' + String.valueOf(imgNum)).concat('_' + String.valueOf(imgMag));
            File nova = new File(newName);
            filius.renameTo(nova);
            System.out.println(newName);
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }

    }
}

我通过打印测试的结果字符串提供了所需的结果最终名称,但是,文件系统最终保持不变。上一个堆栈溢出问题的类似示例如下所示-

File dir = new File("D:/xyz");

if (dir.isDirectory()) { // make sure it's a directory
for (final File f : dir.listFiles()) {
    try {
        File newfile =new File("newfile.txt");

        if(f.renameTo(newfile)){
            System.out.println("Rename succesful");
        }else{
            System.out.println("Rename failed");
        }
    } catch (Exception e) {
        // TODO: handle exception
        e.printStackTrace();
    }
}

正如所见,我无法判断哪些会影响此过程的可行性。注意我是 运行 Windows 10 Home edition 作为管理员,如果这是相关的。感谢您的帮助。

filius.getName() 只获取文件路径的最后一部分。 renameTo 另一方面需要完整路径。所以实际上你最终试图将你的文件移动到不同的目录。

使用:

File nova = new File(dir, newName);

为了重命名原目录下的文件