java取配置文件
⑴ java读取配置文件的几种方法以及路径问题
.类加载器读取:
只能读取classes或者类路径中的任意资源,但是不适合读取特别大的资源。
①获取类加载器 ClassLoader cl = 类名.class.getClassLoader();
②调用类加载器对象的方法:public URL getResource(String name);
此方法查找具有给定名称的资源,资源的搜索路径是虚拟机的内置类加载器的路径。
类 URL 代表一个统一资源定位符,它是指向互联网”资源”的指针。
资源可以是简单的文件或目录,也可以是对更为复杂的对象的引用.
URL对象方法:public String getPath(),获取此 URL 的路径部分。
示例代码:
2.类加载器读取:
只能读取classes或者类路径中的任意资源,但是不适合读取特别大的资源。
①获取类加载器 ClassLoader cl = 类名.class.getClassLoader();
②调用类加载器对象的方法:public InputStream getResourceAsStream(String name);
返回读取指定资源的输入流。资源的搜索路径是虚拟机的内置类加载器的路径。
⑵ java中如何从当前项目中读取运行另一项目中的配置文件
使用url统一资源定位符,前提是需要有访问文件的权限。
importjava.io.File;
importjava.net.URL;
importorg.apache.commons.io.FileUtils;
publicclassDownloadURLFile{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
Stringres=downloadFromUrl("http://images.17173.com/2010/www/roll/201003/0301sohu01.jpg","d:/");
System.out.println(res);
}
(String核猜帆url,Stringdir){
try{
URLhttpurl=newURL(url);
StringfileName兆配=getFileNameFromUrl(url);
System.out.println(fileName);
Filef=newFile(dir+fileName);
FileUtils.URLToFile(httpurl,f);
}catch(Exceptione){
e.printStackTrace();
return"Fault!";
}
return"Successful!";
}
(Stringurl){
Stringname=改雹newLong(System.currentTimeMillis()).toString()+".X";
intindex=url.lastIndexOf("/");
if(index>0){
name=url.substring(index+1);
if(name.trim().length()>0){
returnname;
}
}
returnname;
}
}
⑶ Java 获取配置文件路径
读取配置文件 , xxx.properties放在webroot/WEB-INF/classes/目录下
首先将配置文件转换成InputStream,有两种方式,原理一样,都是通过类加载器得到资源:
(1)InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("xx.properties");
(2) InputStream inputStream =
this.getClass() .getClassLoader().getResourceAsStream( "xx.properties" );
调用对象的getClass()方法是获得对象当前的类类型,这部分数据存在方法区中,
而后在类类型上调用 getClassLoader()方法是得到当前类型的类加载器,我们知道在Java中所有的类都是通过加载器加载到虚拟机中的,而且类加载器之间存在父 子关系,就是子知道父,父不知道子,这样不同的子加载的类型之间是无法访问的(虽然它们都被放在方法区中),所以在这里通过当前类的加载器来加载资源也就 是保证是和类类型同一个加载器加载的。
最后调用了类加载器的getResourceAsStream()方法来加载资源。
(3) 然后加载配置文件,读取属性值
Properties prop = new Properties();
prop.load(input);
String value = prop.getProperty("PropertyName");
input.close();