关于读取jar包中的资源文件问题
程序员文章站
2022-04-28 09:24:11
...
本来以为很简单的一个问题,试了好久好久,其实测试的时候好多时候用法都是对的,只是因为没把别的错误排除,结果误导了,在这里记录下,以防患于未然,万一下次再遇到短时间内解决不了呢。
背景:
我们本地开发环境测试是没问题的,但到了服务器上,或者在本地打包成jar包时就是找不到资源文件。
解决关键是已文件流的方式读取。
这里提供两种解决方案:
1.直接以流方式读取
StringBuffer stringBuffer = new StringBuffer();
try {
InputStream stream = getClass().getClassLoader().getResourceAsStream("fdfs_client.conf");
BufferedReader br = new BufferedReader(new InputStreamReader(stream, "UTF-8"));
String line;
while ((line = br.readLine()) != null) {
stringBuffer.append(line);
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("======================================="+stringBuffer.toString());
2.第一种方式不能满足,比如用一些工具类,人家就要求你传入文件路径,这时候咱也不能上来就重写工具类的方法吧。
try {
String filePath = new ClassPathResource("fdfs_client.conf").getFile().getAbsolutePath();;
ClientGlobal.init(filePath);
} catch (Exception e) {
System.out.println("FastDFS Client Init Fail!");
}
经过测试,两种方式本地和发布都没问题。
上一篇: C/C++结构体有效对齐值的确定
推荐阅读