java - 访问 .jar 文件中的文件

标签 java file resources jar

<分区>

Possible Duplicate:
How do I read a resource file from a Java jar file?

在谷歌搜索了几个小时后,我开始对这个完全疯狂。我还在网站上看到了问题的变体,但似乎无法让它发挥作用。 JFrame 需要从 ini 文件中读取数据,我已经创建了一种打开该文件的方法。所述文件存储在 jar 文件中名为 resources 的文件夹中。

private BufferedReader openIniFile(String filename){
    BufferedReader brReader = null;                 
    try{
        File fileObj = new File(this.getClass().getResource("/resources/" + filename).toURI()); // The fileobject of the file to read
        if(fileObj.exists())                                            
            brReader = new BufferedReader(new FileReader(fileObj));                     

    } catch(Exception e){
        System.err.println("Exception while opening file: " + e.getMessage()); 

    }

    return null;
}

当我在编译后运行代码时,这当然可以完美运行,但在导出到 .jar 文件后会抛出异常。我研究过使用 InputStream、FileInputStream,但似乎找不到可行的解决方案。

如何让jar文件识别资源?

最佳答案

当您的资源在 JAR 文件中时,它就不再是文件了。文件只是文件系统上的物理文件。 解决方案:使用getResourceAsStream .像这样:

new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("/resources/" + filename)))

关于java - 访问 .jar 文件中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8258244/

相关文章:

c - 多线程共享文件的读访问: pthreads

java - Java 中最简单的点对多点数据分发库/框架

php - 本地化的州/省数据

java - 使用 log4j 编程 API 设置根记录器附加器模式

java - hazelcast 存储负载未被调用

c - 在 Linux 上用 C 流式传输音频文件

java - 获取操作系统级别的系统信息

c# - 如何获取存储在资源中的图像的 Uri

java - 在android中存储和获取共享首选项的值

java - 将 HEX 字符串设置为 MQ Correlation ID