欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

spring boot 读取resources下文件 和 打成jar 读取jar包中配置文件

程序员文章站 2022-05-04 19:54:36
...

问题:

        由于使用spring boot + maven 管理项目,所以会把项目打成jar包来进行运行。在不打成jar的情况下,正常情况一般都是读取绝对路径来进行获取配置文件路径。

String url = SensitiveWordInit.class.getResource("/").getFile();
File file = ResourceUtils.getFile("classpath:key.txt");

以上两种方法来获取。但是当项目打包成jar 包时,通过路径获取会出现file:/D:/xxx/xxx.jar!/BOOT-INF/classes!/xx.xx 的错误。

解决办法:

        当项目打成jar包时,还需要读取配置文件。需要通过流的形式来进行读取。方法如下

private Set<String> readWordFile() throws Exception{
		Set<String> set = null;
//		File file = ResourceUtils.getFile("classpath:key.txt");
//		System.out.println(file.toString());
//		String url = SensitiveWordInit.class.getResource("/").getFile();
//		System.out.println("readSensitiveWordFile" + url);
//		File file = new File(url+"key.txt");    //读取文件
		InputStream inputStream = SensitiveWordInit.class.getResourceAsStream("/key.txt");
		InputStreamReader read = new InputStreamReader(inputStream,ENCODING);
		try {
				set = new HashSet<>();
				BufferedReader bufferedReader = new BufferedReader(read);
				String txt ;
				while((txt = bufferedReader.readLine()) != null){    //读取文件,将文件内容放入到set中
					set.add(txt);
				}
		} catch (Exception e) {
			throw e;
		}finally{
			read.close();     //关闭文件流
		}
		return set;
	}

通过

InputStream inputStream = SensitiveWordInit.class.getResourceAsStream("/key.txt");

来获取classpath 下的key.txt 来进行读取。这样就避免了路径的错误问题。

以上就是读取jar包中的配置文件问题解决办法。