wrapper 读取配置文件
来源:互联网 发布:mysql limit 动态参数 编辑:程序博客网 时间:2024/06/08 03:10
读取配置文件路径为 jar所在父目录
eg. server.jar在server/server.jar,读取配置文件log.xml在config/log.xml,则参数地址为:/config/log.xml
注意事项:打包jar文件中不能有需要读取的配置文件。需要在export为jar后,手动删除jar中的配置文件。否则会导致读取外部设置的配置文件无法加载。
/** * */package com.am.util;/** * @author huaXinbo * */public class ResUtil { /** * ----------------------------------------------------------------------- * getAppPath需要一个当前程序使用的Java类的class属性参数,它可以返回打包过的 * Java可执行文件(jar,war)所处的系统目录名或非打包Java程序所处的目录 * * @param cls为Class类型 * @return 返回值为该类所在的Java程序运行的目录 * ---------------------------------------------- * --------------------------- */ public static String getAppPath(Class<?> cls,String file) { // 检查用户传入的参数是否为空 if (cls == null) throw new java.lang.IllegalArgumentException("参数不能为空!"); ClassLoader loader = cls.getClassLoader(); // 获得类的全名,包括包名 String clsName = cls.getName() + ".class"; // 获得传入参数所在的包 Package pack = cls.getPackage(); String path = ""; // 如果不是匿名包,将包名转化为路径 if (pack != null) { String packName = pack.getName(); // 此处简单判定是否是Java基础类库,防止用户传入JDK内置的类库 if (packName.startsWith("java.") || packName.startsWith("javax.")) throw new java.lang.IllegalArgumentException("不要传送系统类!"); // 在类的名称中,去掉包名的部分,获得类的文件名 clsName = clsName.substring(packName.length() + 1); // 判定包名是否是简单包名,如果是,则直接将包名转换为路径, if (packName.indexOf(".") < 0) path = packName + "/"; else {// 否则按照包名的组成部分,将包名转换为路径 int start = 0, end = 0; end = packName.indexOf("."); while (end != -1) { path = path + packName.substring(start, end) + "/"; start = end + 1; end = packName.indexOf(".", start); } path = path + packName.substring(start) + "/"; } } // 调用ClassLoader的getResource方法,传入包含路径信息的类文件名 java.net.URL url = loader.getResource(path + clsName); // 从URL对象中获取路径信息 String realPath = url.getPath(); // 去掉路径信息中的协议名"file:" /*int pos = realPath.indexOf("file:"); if (pos > -1){ realPath = realPath.substring(pos + 5);//获取类所在目录 }*/ //设定为类加载根目录(jar包所在目录) if(file != null && file.startsWith("/")){ // 去掉路径信息最后包含类文件信息的部分,得到类所在的路径 int pos = realPath.indexOf(path + clsName); realPath = realPath.substring(0, pos - 1); // 如果类文件被打包到JAR等文件中时,去掉对应的JAR等打包文件名 if (realPath.endsWith("!")){ realPath = realPath.substring(0, realPath.lastIndexOf("/")); } //返回上一级 realPath = realPath.substring(0,realPath.lastIndexOf("/")); }else{ realPath = realPath.substring(0,realPath.indexOf(cls.getSimpleName() + ".class")); } realPath += file; /*------------------------------------------------------------ ClassLoader的getResource方法使用了utf-8对路径信息进行了编码,当路径 中存在中文和空格时,他会对这些字符进行转换,这样,得到的往往不是我们想要 的真实路径,在此,调用了URLDecoder的decode方法进行解码,以便得到原始的 中文及空格路径 -------------------------------------------------------------*/ try { realPath = java.net.URLDecoder.decode(realPath, "utf-8"); } catch (Exception e) { throw new RuntimeException(e); } return realPath; }// getAppPath定义结束 }
0 0
- wrapper 读取配置文件
- 读取配置文件
- 读取 配置文件
- 读取配置文件
- 读取配置文件
- 配置文件读取
- 配置文件读取
- 读取配置文件
- 读取配置文件
- 读取配置文件
- 读取配置文件
- 读取配置文件
- 读取配置文件
- 读取配置文件
- 读取配置文件
- 读取配置文件
- 读取配置文件
- 配置文件读取
- FragmentTransaction的commit和commitAllowingStateLoss的区别
- 腐蚀和膨胀
- Compiling Ogre3D V2.1 for dummies
- JAVABEAN是什么和总结JAVABEAN的两种使用方式
- 微信企业号回调模式校验/echosstr校验错误的解决办法
- wrapper 读取配置文件
- 图片保存到sd卡
- SDL初始化和创建窗口
- 基于Linux平台的libpcap源代码分析a
- Uva10375 Choose and divide(数论、唯一分解定理、快速幂)
- 【C++】顺序表的实现
- 应聘 + 半个月试用心得(x_nin) (实力不强,大神忽略)
- oracle sql exists 用法
- python 简单的斐波那契数列