处理外部文件的getResourceAsStream

时间:2012-07-05 13:45:08

标签: java directory inputstream

我遇到了getResourceAsStream方法的问题 - 由于目录错误,它返回null。问题是我不知道如何定义目录。

我的项目结构看起来像那样

Project
  #src
    #com.package
      #ExampleClass.java
  #dll
    #MyFile.dll

当我有

InputStream in = this.getClass().getResourceAsStream("../dll/" + "MyFile.dll");

返回null。有没有人知道如何处理这个问题以及如何定义路径?

2 个答案:

答案 0 :(得分:3)

如果this中的ExampleClasscom.package,则需要向上两级才能到达CLASSPATH的根目录:

this.getClass().getResourceAsStream("../../dll/" + "MyFile.dll");

假设/dll目录直接放在CLASSPATH的根目录中。或者只是使用绝对路径:

this.getClass().getResourceAsStream("/dll/" + "MyFile.dll");

如果/dll/MyFile.dll不在您的CLASSPATH上(只需打开您的JAR文件并检查它是否存在),您应该使用文件系统机制来打开它。

答案 1 :(得分:0)

这取决于类路径中MyFile.dll的位置,而不是您项目上的MyFile.dll的位置。请查看where to put a file to read from a class