小编典典

访问.jar文件中的文件

java

搜寻了几个小时后,就开始对此完全取笑。我还在网站上看到了该问题的各种变体,但似乎无法使其正常工作。JFrame需要从ini文件中读取数据,并且我已经创建了一种打开该文件的方法。所述文件存储在jar文件内称为资源的文件夹中。

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文件识别资源?


阅读 223

收藏
2020-09-15

共1个答案

小编典典

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

new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("/resources/" + filename)))
2020-09-15