gpt4 book ai didi

java.io.IOException : Stream closed accessing config files outside of jar folders

转载 作者:行者123 更新时间:2023-12-02 08:51:28 24 4
gpt4 key购买 nike

我正在执行一个jar文件,它从/home/user/xxx/testFolder/jarfile之外的配置文件读取配置,配置文件的路径是/opt/xxx/conf/global_config.cfg。

但是,我可以访问 jar 内的文件,因此我认为错误是由于找不到文件造成的。

下面是我的代码:

public Properties createProperties(){
Properties p = null;
ClassLoader cl = this.getClass().getClassLoader();
try (InputStream stream = cl.getResourceAsStream("/opt/xxx/conf/global_config.cfg")) {
p = new Properties();
BufferedInputStream bis = new BufferedInputStream(stream);
p.load(bis); // this is throwing the error
System.out.println(p.toString());
} catch (IOException e) {
e.printStackTrace();
}

return p;
}

无论 Linux 系统中的路径如何,获取文件的正确方法是什么?

最佳答案

cl.getResourceAsStream("/opt/xxx/conf/global_config.cfg") 

期望资源相对于类(class)位置可用。因此,它将搜索 JAR 内类的相对路径。但路径/opt/xxx/conf/global_config.cfg是绝对磁盘路径,要读取它,需要使用FileInputStream

public Properties createProperties(){
Properties p = null;
ClassLoader cl = this.getClass().getClassLoader();
try (InputStream stream =new FileInputStream("/opt/xxx/conf/global_config.cfg")) {
p = new Properties();
p.load(stream);
System.out.println(p.toString());
} catch (IOException e) {
e.printStackTrace();
}

return p;
}

关于java.io.IOException : Stream closed accessing config files outside of jar folders,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60740561/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com