Java tutorial
/** * Copyright (c) 2012-2014 http://www.eryansky.com * * Licensed under the Apache License, Version 2.0 (the "License"); */ package com.nerve.commons.repository.tools; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.core.io.DefaultResourceLoader; import org.springframework.core.io.Resource; import org.springframework.core.io.ResourceLoader; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.NoSuchElementException; import java.util.Properties; /** * Properties. ?properties, ???. * <p/> */ public class PropertiesLoader { private static Logger logger = LoggerFactory.getLogger(PropertiesLoader.class); private static ResourceLoader resourceLoader = new DefaultResourceLoader(); private final Properties properties; public PropertiesLoader(String... resourcesPaths) { properties = loadProperties(resourcesPaths); } public Properties getProperties() { return properties; } /** * ?PropertySystemProperty. */ private String getValue(String key) { String systemProperty = System.getProperty(key); if (systemProperty != null) { return systemProperty; } return properties.getProperty(key); } /** * ?StringPropertySystemProperty,Null. */ public String getProperty(String key) { String value = getValue(key); if (value == null) { throw new NoSuchElementException(); } return value; } /** * ?StringPropertySystemProperty.NullDefault. */ public String getProperty(String key, String defaultValue) { String value = getValue(key); return value != null ? value : defaultValue; } /** * ?IntegerPropertySystemProperty.Null. */ public Integer getInteger(String key) { String value = getValue(key); if (value == null) { throw new NoSuchElementException(); } return Integer.valueOf(value); } /** * ?IntegerPropertySystemProperty.NullDefault */ public Integer getInteger(String key, Integer defaultValue) { String value = getValue(key); return value != null ? Integer.valueOf(value) : defaultValue; } /** * ?DoublePropertySystemProperty.Null. */ public Double getDouble(String key) { String value = getValue(key); if (value == null) { throw new NoSuchElementException(); } return Double.valueOf(value); } /** * ?DoublePropertySystemProperty.NullDefault */ public Double getDouble(String key, Integer defaultValue) { String value = getValue(key); return value != null ? Double.valueOf(value) : defaultValue; } /** * ?BooleanPropertySystemProperty.Null,?true/falsefalse. */ public Boolean getBoolean(String key) { String value = getValue(key); if (value == null) { throw new NoSuchElementException(); } return Boolean.valueOf(value); } /** * ?BooleanPropertySystemProperty.NullDefault,?true/falsefalse. */ public Boolean getBoolean(String key, boolean defaultValue) { String value = getValue(key); return value != null ? Boolean.valueOf(value) : defaultValue; } /** * properties? * * @param resourcesPath ? * @param key ?? * @param value */ public void modifyProperties(String resourcesPath, String key, String value) { try { // ?? properties.setProperty(key, value); FileOutputStream outputFile = new FileOutputStream(resourcesPath); properties.store(outputFile, "modify"); outputFile.close(); outputFile.flush(); } catch (Exception e) { } } /** * properties, ???. * Spring Resource?, ?UTF-8. * * @see org.springframework.beans.factory.config.PropertyPlaceholderConfigurer */ private Properties loadProperties(String... resourcesPaths) { Properties props = new Properties(); for (String location : resourcesPaths) { logger.debug("Loading properties file from:" + location); InputStream is = null; try { Resource resource = resourceLoader.getResource(location); is = resource.getInputStream(); props.load(is); } catch (IOException ex) { logger.info("Could not load properties from path:" + location + ", " + ex.getMessage()); } finally { if (is != null) try { is.close(); } catch (IOException e) { e.printStackTrace(); } } } return props; } }