【问题标题】:Parameter 'directory' is not a directory for a parameter which is a directory参数“目录”不是目录的参数的目录
【发布时间】:2015-10-06 14:41:37
【问题描述】:

我收到一个奇怪的错误,我提供给方法的参数抱怨它不是一个目录,但它实际上是一个包含文件的目录...我不明白出了什么问题...

顶层:

public static File mainSchemaFile = new File("src/test/resources/1040.xsd");
public static File contentDirectory = new File("src/test/resources/input");
public static File outputDirectory = new File("src/test/resources/output");


DecisionTableBuilder builder =constructor.newInstance(log, contentDirectory, outputDirectory);

// Here is where the error occurs
builder.compile(mainSchemaFile);

我正在使用的课程:

public class DecisionTableBuilder {

   public void compiler(File schemaFile) {
      ...
      // It's complaining about contentDirectory, it goes to FileUtils class for this
      Collection<File> flowchartFiles = FileUtils.listFiles(contentDirectory, mapExtension, true);
      ...
   }
}

这里是 apache FileUtils 类:

public class FileUtils {

    private static void validateListFilesParameters(File directory, IOFileFilter fileFilter) {
        if (!directory.isDirectory()) {
            throw new IllegalArgumentException("Parameter 'directory' is not a directory");
        }
        if (fileFilter == null) {
            throw new NullPointerException("Parameter 'fileFilter' is null");
        }
    }

}

输出:参数“目录”不是目录

我得到的错误输出是什么...

任何人都知道这里发生了什么我非常困惑......任何帮助将不胜感激。

编辑:

在我的顶层我添加了以下行:

if(contentDirectory.isDirectory()) {
    System.out.println("Content Directory: "+contentDirectory);
}

Output: src/test/resources/input

【问题讨论】:

  • 来自File.isDirectory() javadoc,true if and only if the file denoted by this abstract pathname exists and is a directory; false otherwise。由于您使用的是相对路径,因此它可能已解析为不存在的位置。能不能把路径打印出来看看是否存在?
  • FileUtils.validateListFilesParameters 添加这一行'System.out.println(directory.getCanonicalPath());'在if (!directory.isDirectory())之前,看看这个指向哪里。
  • @srkavin 是的,我做了,我在 EDIT 下编辑了上面的问题,它打印出相对路径,但我不明白这怎么可能是个问题。
  • @Shahzeb 我正在使用 FileUtils 作为 maven 依赖项,我将无法向其中添加代码
  • 在此处放置一个调试点,当它停在那里以在 Eclipse 中观看时。它失败的唯一原因是那时不是目录。

标签: java oop io fileutils


【解决方案1】:

您指向的是文件,而不是 mainSchemaFile 变量中的目录。减少包含1040.xsd 的文件夹的路径 - 它应该可以解决问题。

【讨论】:

    猜你喜欢
    • 2015-12-20
    • 2019-10-18
    • 1970-01-01
    • 2022-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-06
    • 2015-05-16
    相关资源
    最近更新 更多