代码问题:
// 类加载器默认就到src目录下面去找配置文件,同样适用javaee工程,你的问题是路径问题,看我下面的示例:
ClassLoader cl = DaoFactoryclassgetClassLoader();
// daoproperties配置在src下面的cn/itcast/xml/model下面。
InputStream is = clgetResourceAsStream("cn/itcast/xml/model/daoproperties");
// daoproperties直接配置在src下面。
// InputStream is = clgetResourceAsStream("daoproperties");
InputStream in = getPropertiesclassgetClassLoader()getResourceAsStream(
"configproperties");
这一句换个写法试试:
Properties props = new Properties();
String url = thisgetClass()getClassLoader()getResource(
"configproperties")toString()substring(6);
String empUrl = urlreplace("%20", " ");// 如果你的文件路径中包含空格,是必定会报错的
Systemoutprintln(empUrl);
InputStream in = null;
try {
in = new BufferedInputStream(new FileInputStream(empUrl));
propsload(in);
} catch (FileNotFoundException e1) {
e1printStackTrace();
} catch (IOException e1) {
e1printStackTrace();
}
我就是一直这么写的,没问题。
我猜你读取文件为空的原因,是你的文件路径有空格。
读取配置文件 , xxxproperties放在webroot/WEB-INF/classes/目录下
首先将配置文件转换成InputStream,有两种方式,原理一样,都是通过类加载器得到资源:
(1)InputStream inputStream = ThreadcurrentThread()getContextClassLoader()getResourceAsStream("xxproperties");
(2) InputStream inputStream =
thisgetClass() getClassLoader()getResourceAsStream( "xxproperties" );
调用对象的getClass()方法是获得对象当前的类类型,这部分数据存在方法区中,
而后在类类型上调用 getClassLoader()方法是得到当前类型的类加载器,我们知道在Java中所有的类都是通过加载器加载到虚拟机中的,而且类加载器之间存在父 子关系,就是子知道父,父不知道子,这样不同的子加载的类型之间是无法访问的(虽然它们都被放在方法区中),所以在这里通过当前类的加载器来加载资源也就 是保证是和类类型同一个加载器加载的。
最后调用了类加载器的getResourceAsStream()方法来加载资源。
(3) 然后加载配置文件,读取属性值
Properties prop = new Properties();
propload(input);
String value = propgetProperty("PropertyName");
inputclose();
URL url = getServlet()getServletContext()getResource("/WEB-INF/webxml");
///localhost/loa/WEB-INF/webxml
Systemoutprintln(urlgetPath());
URLConnection conn = urlopenConnection();
connconnect();
InputStream input = conngetInputStream();
以上就是关于java调用properties里的值出现了问题,找不到指定路径全部的内容,包括:java调用properties里的值出现了问题,找不到指定路径、js 怎么读取properties文件啊、Java 获取配置文件路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)