为什么这个单元测试说我的目录不存在呢?

这段代码
URL listofFiles = this.getClass().getResource("someDir");
File f = new File(listofFiles.toString());
File[] files = f.listFiles();
在Tomcat Web服务器环境中的JUnit单元测试中运行。 返回的URL绝对有效。我已经进入了OS X中的Finder,执行了“转到目录”,粘贴了
listofFiles
的值并查看了目录中的所有文件。 为什么
listFiles()
返回null?     
已邀请:
根据av3ѭ的Javadoc:   返回:   一组抽象路径名,表示此抽象路径名表示的目录中的文件和目录。如果目录为空,则数组将为空。如果此抽象路径名不表示目录,或者发生I / O错误,则返回null。 您获得
null
返回值这一事实表明您传递给File构造函数的路径未指向目录。 我怀疑将
URL.toString()
的结果传递给File构造函数是在构建一个不是你想象的路径。相反,尝试类似的东西
File f = new File(listofFiles.toURI());
此外,您可能需要记录
f.getAbsolutePath()
的值以确保正在读取的路径与您期望的路径相同。     
带有String的File构造函数需要一个路径,而不是URL的toString。 使用不同的构造函数,例如
new File(listofFiles.toURI())
。或者给它一条路:
new File(listofFiles.getPath())
。 更新:或者(尽管看起来很难看)尝试两个文件构造函数,正如Java-guru Kohsuke Kawaguchi建议的那样。   如果我们只有File(URL)构造函数......     

要回复问题请先登录注册