读取jar中的资源文件

时间:2013-03-29 13:26:59

标签: java

我正在尝试读取.jar文件中的初始文本文件。我试图用ClassLoader加载文件,但它没有用。奇怪的是,这种方式在Eclipse中起作用,但它并没有作为单独的可执行jar文件。

现在我将尝试重新创建这种情况:

A类:

/**
 * Read initial file.
 *
 * @return initial file
 */
private SomeObject readInitialObject() {
    String path = "object/Welcome.xml";
    File f = new File(path);
    Reader r = new Reader(f);
    SomeObject o = r.read();
    return o;
}

班级读者:

private File importedFile; 
public void read() {
...
 DocumentBuilderFactory dbFactory = DocumentBuilderFactory
                .newInstance();
        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
        Document doc = dBuilder.parse(FileLoader.load(importedFile.
                                                           getPath()));
}

类FileLoader

/**
 * Load input stream.
 *
 * @param path file path
 * @return input stream
 */
public static InputStream load(final String path) {
    InputStream input = FileLoader.class.getResourceAsStream(path);
    if (input == null) {
        input = FileLoader.class.getResourceAsStream("/" + path);
    }

    return input;
}

The .jar file:

我很感激收到你的建议。谢谢!

4 个答案:

答案 0 :(得分:1)

请查看Distributed jar file not picking up my .txt file示例。

您需要指定相对于您使用{/ 1}}

的班级的路径

答案 1 :(得分:0)

在jar文件中,文件结构与实际结构略有不同。您可以打开下巴以查看文件的确切路径。 另请参阅http://docs.oracle.com/javase/tutorial/deployment/jar/build.html

答案 2 :(得分:0)

问题可能是Windows不区分大小写,但在jar中文件名区分大小写(如在Linux上)。进一步不使用文件,因为你使用/而不是\

所以我认为实际的文件还有其他一些情况。

答案 3 :(得分:-1)

打开你的jar文件,看你是否有导出的文件!      - 如果没有 - >再次将项目导出到jar文件,然后选择要导出的文件      - 是的 - >检查文件的路径