我面对的是代码,试图从那里为类本身的.class文件相同目录中读取一些配置文件:获取路径给定的类文件的目录
File[] configFiles = new File(
this.getClass().getResource(".").getPath()).listFiles(new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.endsWith(".xml");
}
});
显然,这在某些情况下工作(或许在Resin内部运行代码时),但对于我来说,运行Tomcat时,它仅仅因为NPE而失败,因为getClass().getResource(".")
返回null
。
一位同事建议创建另一个配置文件,其中包含所有“.xml”配置文件的列表(这确实可以在这里工作,因为它保持相当静态),并且你不应该尝试做这样的事情Java的。
不过,我想知道是否有一些好方法,它普遍适用于获取给定.class文件所在目录的路径?我猜你可以从.class文件本身的路径得到它:
new File(this.getClass().getResource("MyClass.class").getPath()).getParent()
......但这是唯一/最干净的方式吗?
编辑:为了澄清,假设我们知道这是部署在这样一种方式,MyClass.class总是会从磁盘上的.class文件读取的应用程序中使用,而资源将出现在同一个目录。
发现此相关的问题:http://stackoverflow.com/questions/778187/getting-directory-path-to-class-file-containing-main 其接受的答案使用基本上是我建议[的getResource (“MyClass.class”)。getPath()] ...但它并不直接回答这是唯一的还是最好的方法。 – Jonik 2009-07-27 14:45:23