maven工程下读取src/main/resources下的配置文件:
1.所有类和资源文件编译后位于classpath路径(targer/classes)
2.Class.getClassLoader() 返回该类的类加载器
3.ClassLoader.getSystemResourceAsStream() 从用来加载类的搜索路径打开具有指定名称的资源,以读取该资源
4.Properties.load(InputStream inStream) 从输入流中读取属性列表(键和元素对)
ClassLoader classLoader = Test.class.getClassLoader(); URL resource = classLoader.getResource("test.xml"); String path = resource.getPath(); System.out.println(path); InputStream resourceAsStream = classLoader.getResourceAsStream("test.xml"); Properties properties = new Properties(); properties.load(resourceAsStream);
附:配置文件读取工具类
import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.Map; import java.util.Properties; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class PropertiesUtil { private static Logger logger = LoggerFactory.getLogger(PropertiesUtil.class); private static Map<String, PropertiesUtil> propsMap; Properties properties; public static synchronized PropertiesUtil getInstance(String propName) { PropertiesUtil instance = null; if (propsMap == null) { propsMap = new HashMap<String, PropertiesUtil>(); } instance = propsMap.get(propName); if (instance == null) { instance = new PropertiesUtil(propName); propsMap.put(propName, instance); } return instance; } private PropertiesUtil(String propName) { ClassLoader classLoader = PropertiesUtil.class.getClassLoader(); InputStream inStream = classLoader.getResourceAsStream(propName); properties = new Properties(); try { properties.load(inStream); } catch (IOException e) { throw new RuntimeException("There's no resource file named [" + propName + "]", e); } } public String getProperty(String key) { return properties.getProperty(key); } public String getProperty(String key, String defaultValue) { return properties.getProperty(key, defaultValue); } public int getInt(String key) { return Integer.valueOf(getProperty(key)); } public int getInt(String key, int defaultValue) { return getProperty(key) == null ? defaultValue : Integer.valueOf(getProperty(key)); } public long getLong(String key) { return Long.valueOf(getProperty(key)); } public long getLong(String key, long defaultValue) { return getProperty(key) == null ? defaultValue : Long.valueOf(getProperty(key)); } public boolean getBoolean(String key) { return Boolean.parseBoolean(getProperty(key)); } public boolean getBoolean(String key, boolean defaultValue) { return getProperty(key) == null ? defaultValue : Boolean.parseBoolean(getProperty(key)); } public Properties getProperties() { return properties; } public static void main(String[] args) { PropertiesUtil pUtil = PropertiesUtil.getInstance("otter.properties"); String reString = pUtil.getProperty("otter.cache.zkhost"); logger.info(reString); } }