String path = classLoader.getResource("config.properties").getPath();
上面方法获得路径时,如果路径里存在空格,会转码成%20,导致找不到文件。
通过下面方法解决:
String realPath=java.net.URLDecoder.decode(path,"utf-8");
以下类为从配置文件中读数据
/** * 读配置文件 * @author renhuizhen * @date 2019年1月19日下午11:38:12 */ public class ReadPropertiesUtil { private static final Logger logger = LoggerFactory.getLogger(ReadPropertiesUtil.class); public static String getProperties(String key) { Properties properties = new Properties(); ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); String path = classLoader.getResource("config.properties").getPath(); FileInputStream fileInputStream = null; String defaultValue = null; try { String realPath=java.net.URLDecoder.decode(path,"utf-8"); fileInputStream = new FileInputStream(realPath); properties.load(fileInputStream); defaultValue = properties.getProperty(key); fileInputStream.close(); } catch (IOException e) { e.printStackTrace(); logger.error(HikLog.toLog(HikLog.message("IOException","e")),e); } return defaultValue; } }