解决springboot读取jar包中文件的问题
程序员文章站
2022-03-02 21:03:43
...
前言
我们这边有一个需求如下:
- 有一个模板文件,有占位符,在添加产品的时候,将占位符中内容替换成相应的产品信息并生成文件。
在项目中使用的是springboot,在本地读取文件因为不是以jar包的方式访问,所以可以读取到文件内容,而在服务器上以jar的形式读取,所以读取的文件内容为空。
先贴上代码
private static String readScript(String filePath){
File file=new File(filePath);
Long fileLength=file.length();
byte[] fileContext=new byte[fileLength.intValue()];
try {
FileInputStream in=new FileInputStream(filePath);
in.read(fileContext);
in.close();
} catch (IOException e) {
e.printStackTrace();
}
return new String(fileContext);
}
这样读到文件路径为:
file:/home/build/admin/rampage-admin-web-0.1.0-SNAPSHOT-exec.jar!/BOOT-INF/classes!/templates/script.ftl
但是文件内容为空,并没有报错异常信息。后来百度后改为
private static String readScript(File file){
Long fileLength=file.length();
byte[] fileContext=new byte[fileLength.intValue()];
try {
FileInputStream in=new FileInputStream(file);
in.read(fileContext);
in.close();
} catch (IOException e) {
e.printStackTrace();
}
return new String(fileContext);
}
参数File 的值如下:
InputStream stream = getClass().getClassLoader().getResourceAsStream("templates/script.ftl");
File targetFile = new File("script.ftl");
FileUtils.copyInputStreamToFile(stream, targetFile);
此处targetFile即为参数
下一篇: 联想与司马南的斗法,联想再输一着
推荐阅读
-
完美转换MySQL的字符集 解决查看utf8源文件中的乱码问题
-
解决JavaWeb读取本地json文件以及乱码的问题
-
解决springboot 获取form-data里的file文件的问题
-
Spring自动扫描无法扫描jar包中bean的解决方法
-
完美转换MySQL的字符集 解决查看utf8源文件中的乱码问题
-
解决JavaWeb读取本地json文件以及乱码的问题
-
详解Intellij IDEA中.properties文件中文显示乱码问题的解决
-
解决C# X64应用程序中读取WParam溢出的问题
-
如何解决springboot读取配置文件的中文乱码问题
-
Spring自动扫描无法扫描jar包中bean的解决方法