java运行时获取java类所在目录的properties文件
public final class Config
{
private static String fileSeparator = System.getProperty("file.separator");
static
{
try
{
InputStream in = null;
String currentJarPath = URLDecoder.decode(Config.class.getProtectionDomain().getCodeSource().getLocation().getFile(), "UTF-8"); //获取当前Jar文件名
String path = Config.class.getResource("").getPath();
if(path.indexOf("!")!=-1)
{//在jar中
JarFile currentJar = new JarFile(currentJarPath);
JarEntry dbEntry = currentJar.getJarEntry("conf/server.properties");
if(dbEntry != null)
in = currentJar.getInputStream(dbEntry);
}
if(in == null)
{
//String loaderPath = Thread.currentThread().getContextClassLoader().getResource("").getPath();
String loaderPath = currentJarPath;
String packPath = Config.class.getPackage().toString();
packPath = packPath.replace("package ", "");
packPath = "/" + packPath.replace(".", "/");
if(!loaderPath.endsWith("/"))
loaderPath = loaderPath.substring(0, loaderPath.lastIndexOf("/")) + fileSeparator;
loaderPath = loaderPath.replace(packPath, "");
String tPath = loaderPath+"conf"+fileSeparator+"server.properties";
logger.info("Config class load server.properties, the path =" + tPath);
in =new FileInputStream(tPath);
}
Properties prop = new Properties();
prop.load(in);
}