maven 多模块工程 跨模块读取资源文件
1.最简单的方式,就是直接在资源文件目录读取,但是这种方式,打成jar包后会读取失败,因为资源文件在jar包内,是不能通过绝对路径访问的
String pfxPath = YSTxService.class.getResource("/cert/"+YinShengConstant.partnerId+".pfx").getPath().toString();
String cerPath = YSTxService.class.getResource("/cert/businessgate.cer").getPath().toString();
2.使用流的方式直接读取文件内容,这种方式对于需要传绝对路径或File对象做为参数也是不可以的
InputStream stream = getClass().getClassLoader().getResourceAsStream("/cert/"+YinShengConstant.partnerId+".pfx");
InputStream stream = getClass().getClassLoader().getResourceAsStream("/cert/businessgate.cer");
3.如果需要使用资源文件的绝对路径或File对象,则可以使用流,将资源文件复制到jar包外,在用绝对路径或者File对象使用
File partnerId = new File("YScert/"+YinShengConstant.partnerId+".pfx");
File businessgate = new File("YScert/businessgate.cer");
try {
if (!partnerId.exists()) {
//第一种方式
InputStream stream = YSTxService.class.getResourceAsStream("/cert/"+YinShengConstant.partnerId+".pfx");
//第二种方式
InputStream stream0 = getClass().getClassLoader().getResourceAsStream("cert/"+YinShengConstant.partnerId+".pfx");
FileUtils.copyInputStreamToFile(stream, partnerId);
}
if (!businessgate.exists()) {
InputStream stream = getClass().getClassLoader().getResourceAsStream("/cert/businessgate.cer");
FileUtils.copyInputStreamToFile(stream, businessgate);
}
} catch (IOException e) {
log.error(e.getMessage());
throw new YshopException(e.getMessage());
}
String absolutePath = partnerId.getAbsolutePath();
String absolutePath1 = businessgate.getAbsolutePath();
|