有的时候我们需要读取文件,文件的路径若写死了,当我们上线的时候会比较麻烦,往往会经常出现找不到文件路径的问题,对于这个问题的解决方案就是用ClassLoader的类加载,来加载文件:
加载方式如下:
1:用下面的读取方式读取配置文件,Thread.currentThread().getContextClassLoader()读取的时候,默认的读取的文件的路径是项目的根目录
若该文件在项目根目录下面则直接按照这样的方式写:
private static final String CONFIG_FILE="config.properties";
InputStream inStream=Thread.currentThread().getContextClassLoader().getResourceAsStream(CONFIG_FILE);
2:若配置文件在http.com.cn的包下面,则按照下面的方式读取:
private static final String CONFIG_FILE="http/com/cn/config.properties";
InputStream inStream=Thread.currentThread().getContextClassLoader().getResourceAsStream(CONFIG_FILE);
3:若用SystemConfig.class.getResourceAsStream(CONFIG_FILE)这样的方式的话,默认的文件的路径就是SystemConfig类的路径,就是完整的包路径,
也就是要使用InputStream inStream =SystemConfig.class.getResourceAsStream("/http/com/cn/config.properties")这样的绝对路径"/"开头
用到classloader的getResourceAsStream的就要写相对路径的方式写路径,若包名以"cn"开头,则应该按照以包名"cn/"写完整的路径的方式的相对路径方式,若写“类名.class.getResourceAsStream("")"这样的方式,则必须要按照绝对路径的方式写文件的路径以"/"开头