dswork.webio.EnvironmentUtil Maven / Gradle / Ivy
package dswork.webio;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.LinkedList;
import java.util.Properties;
/**
* 读取系统properties配置文件,默认路径为:"/config/config.properties"
*/
public class EnvironmentUtil
{
private static final String SYSTEM_PROPERTIES_PATH = "/config/config.properties";
private static LinkedProperities SYSTEM_PROPERTIES;
private static boolean isboot = false;
private static String JarPath = null;
private EnvironmentUtil()
{}
static
{
String p = EnvironmentUtil.class.getResource("/").getPath().replaceAll("\\\\", "/");
if(p.startsWith("file:/") && p.endsWith(".jar!/BOOT-INF/classes!/"))
{
isboot = true;
// fix Windows和Linux差异
// Windows file:/C:/WorkServer
// Linux file:/WorkServer
p = p.substring(5, p.length() - 20);// jar路径
if(p.indexOf(":") == 2)
{
p = p.substring(1, p.lastIndexOf("/"));// Windows
}
else
{
p = p.substring(0, p.lastIndexOf("/"));// Linux
}
JarPath = p;
}
setSystemProperties(SYSTEM_PROPERTIES_PATH);
}
public static String getApplicationPath()
{
return JarPath;
}
private static boolean init(InputStream stream)
{
if(stream != null)
{
try
{
SYSTEM_PROPERTIES.load(stream);
return true;
}
catch(Exception e)
{
}
finally
{
try
{
stream.close();
}
catch(IOException ioe)
{
}
}
}
return false;
}
public static void setSystemProperties(String path)
{
SYSTEM_PROPERTIES = new LinkedProperities();
InputStream stream = null;
try
{
// spring boot下先判断外部配置文件
if(isboot)
{
stream = new FileInputStream(JarPath + path);
// System.err.println("config.properties FileInputStream= " + JarPath + path);
if(init(stream))
{
return;
}
}
stream = EnvironmentUtil.class.getResourceAsStream(path);
// System.err.println("config.properties getResourceAsStream= " + path);
if(init(stream))
{
return;
}
System.out.println(SYSTEM_PROPERTIES_PATH + "无法加载");
}
catch(Error e)
{
}
catch(Exception e)
{
}
}
/**
* 获得系统属性配置信息,如果没有则返回null
* @param name 属性名
* @return String
*/
public static final String getStringProperty(String... name)
{
String str = null;
if(SYSTEM_PROPERTIES != null)
{
int len = name.length;
for(int i = 0; i < len; i++)
{
if(name[i] != null)
{
str = SYSTEM_PROPERTIES.getProperty(name[i]);
if(str != null)
{
break;
}
}
}
}
return str == null ? null : String.valueOf(str).trim();
}
/**
* 转换值,如果没有则返回默认值(长整型)
* @param v 值
* @param defaultValue 默认值
* @return long
*/
private static final long _toLong(String v, long defaultValue)
{
try
{
return v == null ? defaultValue : Long.parseLong(v);
}
catch(Exception e)
{}
return defaultValue;
}
/**
* 转换值,如果没有则返回默认值(字符串类型)
* @param v 值
* @param defaultValue 默认值
* @return String
*/
private static final String _toString(String v, String defaultValue)
{
try
{
return v == null ? defaultValue : v;
}
catch(Exception e)
{}
return defaultValue;
}
/**
* 转换值,如果没有则返回默认值(布尔值"true"或"false")
* @param v 值
* @param defaultValue 默认值
* @return boolean
*/
private static final boolean _toBoolean(String v, boolean defaultValue)
{
boolean res = defaultValue;
try
{
if(v != null)
{
if("true".equalsIgnoreCase(v))
{
res = Boolean.TRUE;
}
else if("false".equalsIgnoreCase(v))
{
res = Boolean.FALSE;
}
}
}
catch(Exception e)
{}
return res;
}
/**
* 获得系统属性配置信息,如果没有则返回默认值(长整型)
* @param name1 属性名
* @param name2 备用属性名
* @param defaultValue 默认值
* @return long
*/
public static final long getToLong(String name1, String name2, long defaultValue)
{
return _toLong(getStringProperty(name1, name2), defaultValue);
}
/**
* 获得系统属性配置信息,如果没有则返回默认值(长整型)
* @param name 属性名
* @param defaultValue 默认值
* @return long
*/
public static final long getToLong(String name, long defaultValue)
{
return _toLong(getStringProperty(name), defaultValue);
}
/**
* 获得系统属性配置信息,如果没有则返回默认值(字符串类型)
* @param name1 属性名
* @param name2 备用属性名
* @param defaultValue 默认值
* @return String
*/
public static final String getToString(String name1, String name2, String defaultValue)
{
return _toString(getStringProperty(name1, name2), defaultValue);
}
/**
* 获得系统属性配置信息,如果没有则返回默认值(字符串类型)
* @param name 属性名
* @param defaultValue 默认值
* @return String
*/
public static final String getToString(String name, String defaultValue)
{
return _toString(getStringProperty(name), defaultValue);
}
/**
* 获得系统属性配置信息,如果没有则返回默认值(布尔值"true"或"false")
* @param name1 属性名
* @param name2 备用属性名
* @param defaultValue 默认值
* @return boolean
*/
public static final boolean getToBoolean(String name1, String name2, boolean defaultValue)
{
return _toBoolean(getStringProperty(name1, name2), defaultValue);
}
/**
* 获得系统属性配置信息,如果没有则返回默认值(布尔值"true"或"false")
* @param name 属性名
* @param defaultValue 默认值
* @return boolean
*/
public static final boolean getToBoolean(String name, boolean defaultValue)
{
return _toBoolean(getStringProperty(name), defaultValue);
}
/**
* 获得配置文件里的所有的键值对
* @return LinkedProperities
*/
public static final LinkedProperities getSystemProperties()
{
return SYSTEM_PROPERTIES;
}
public static class LinkedProperities extends Properties
{
private static final long serialVersionUID = 1L;
private LinkedList linkedList = new LinkedList();
@Override
public synchronized Object put(Object key, Object value)
{
linkedList.add((String) key);
return super.put(key, value);
}
public LinkedList getAllKeysToOrder()
{
return linkedList;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy