在Spring项目中读取文件时,ClassPathResource类的构造参数path无需绝对路径区分。无论使用"json/city_code.json"还是"/json/city_code.json",都能成功获取文件输入流。面对是否需要在路径前加"/"的问题,应考虑使用的读取方法。通过Class读取文件时,路径需以"/"开始;通过ClassLoader或Spring提供的工具...
Java 读取resources下的资源文件
在Web项目的resources目录中,常常需要存放配置文件和资源文件。本文总结了常用的文件读取方式,并说明了需要注意的细节。
为了使用FileUtils、IOUtils等工具类,需要引入commons-io jar包。
通过ClassLoader读取文件有两种方式:获取文件输入流和获取文件URL。使用ClassLoader.getResourceAsStream()即可。
使用Class读取文件时,同样有两种方式:获取文件输入流和获取文件URL。通过Class.getResourceAsStream()实现。
Class.getResourceAsStream()与ClassLoader.getResourceAsStream()的主要区别在于路径的处理。Class方法需要在文件路径前加一个"/"。
在Spring项目中读取文件时,ClassPathResource类的构造参数path无需绝对路径区分。无论使用"json/city_code.json"还是"/json/city_code.json",都能成功获取文件输入流。
面对是否需要在路径前加"/"的问题,应考虑使用的读取方法。通过Class读取文件时,路径需以"/"开始;通过ClassLoader或Spring提供的工具类读取文件则无需添加。
解决这些问题的最佳方法是查阅源码并进行断点调试,以理解各个读取文件方式之间的联系和差异。
以下是Class类两个方法的部分源码,通过分析源码可得出在使用这些方法读取文件时,路径处理方式存在差异。具体而言,通过Class读取文件时路径需以"/"开头,而通过ClassLoader或Spring工具类读取文件则无需添加。理解这些细节有助于正确使用相关API,高效完成资源文件读取任务。2024-10-30