访问.jar文件中的文件

Chr*_*zmo 14 java resources jar file

可能重复:
如何从Java jar文件中读取资源文件?

谷歌搜索几个小时后开始完全疯狂.我也看到了网站上的问题的变化,但似乎无法让它工作.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;
}
Run Code Online (Sandbox Code Playgroud)

当我在编译后运行代码时,这当然很有效,但在导出到.jar文件后抛出异常.我已经研究过使用InputStream,FileInputStream但似乎无法找到可行的解决方案.

如何让jar文件识别资源?

unb*_*eli 21

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

new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("/resources/" + filename)))
Run Code Online (Sandbox Code Playgroud)


Mic*_*ael 5

你读错了文件。如果文件位于 JAR 中,则不能使用File该类。相反,您必须InputStream使用getResourceAsStream()以下命令获取文件:

InputStream in = this.getClass().getResourceAsStream("/resources/" + filename);
Run Code Online (Sandbox Code Playgroud)