SpringBoot打成jar包后,读取resources目录下的文件

一般方法:

Properties pps = new Properties();
File file = ResourceUtils.getFile("classpath:defult.properties");
pps.load(new FileReader(file));

此时打包成jar运行时会报错: java.io.FileNotFoundException

  • 在调试过程中,文件是真实存在于磁盘的某个目录。此时通过获取文件路径,是可以正常读取的,因为文件确实存在。

  • 而打包成jar以后,实际上文件是存在于jar这个文件里面的资源文件,在磁盘是没有真实路径的。所以通过ResourceUtils.getFile或者this.getClass().getResource("")方法无法正确获取文件。

正确方法:

  • 采用流的方式进行处理,同时读取流时设置编码utf-8
  • 使用InputStream inputStream=this.getClass().getResourceAsStream("") 会指定要加载的资源路径与当前类所在包的路径一致。因此能正常读取文件。
  • Properties pps = new Properties();
    InputStream stream = getClass()
                        .getClassLoader()
                        .getResourceAsStream("defult.properties"); 
    BufferedReader br = new BufferedReader(new InputStreamReader(stream, "UTF-8"));
    pps.load(br);

猜你喜欢

转载自blog.csdn.net/baidu_23275675/article/details/82622577
今日推荐