【问题标题】:Mkdir Creates Parent Directory If not existMkdir 创建父目录(如果不存在)
【发布时间】:2020-07-22 10:04:00
【问题描述】:

当我使用下面的代码时,即使 D 驱动器中不存在 \scrshot\vb,它也会创建 \scrshot\vb\uv。

takeScreenshot("D:\\scrshot\\vb\\uv", "s.png");

    public void takeScreenshot(String fileDir,String fileName)
    {


        File directory=new File(fileDir);
        if(!directory.exists())
            directory.mkdir();
        File file=((TakesScreenshot)ddr).getScreenshotAs(OutputType.FILE);
        try {
            FileUtils.copyFile(file,new File(directory.getAbsolutePath()+File.separator+fileName));
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }



    }

如果我的理解是正确的,如果父文件夹不存在,mkdir() 将不会创建它。但这里它在 D 驱动器下创建 \scrshot\vb\。这个thread供参考。

【问题讨论】:

  • 您确定该目录不是由FileUtils.copyFile()创建的吗?
  • 请注明JDK版本。
  • 我正在使用 Java 8
  • @Kenster 你是对的。 FileUtils.copyFile() 创建文件夹结构而不是 mkdir()。您能否解释一下为什么会在您的答案中发生。

标签: java


【解决方案1】:

mkdir() 从不创建父目录

但在你的代码中

FileUtils.copyFile(file,new File(directory.getAbsolutePath()+File.separator+fileName));

这一行负责创建目录。

【讨论】:

    【解决方案2】:

    我假设您使用的是 Apache Commons FileUtildocumentation 明确指出,如果包含目标文件的目录不存在,则将创建它:

    此方法将指定源文件的内容复制到 指定的目标文件。 存放目标文件的目录 如果不存在则创建。 如果目标文件存在,则 这个方法会覆盖它。

    【讨论】: