下午闲来无事,看了一个教程,关于读取properties的方法,其实,这种代码网上一大片一大片的,都懒的看了。说说我联想到了什么吧。
首先是getResourceAsStream()方法,就是从stream中获取resource而已,那么这个方法是谁提供的呢?
角色之一:ClassLoader
public InputStream getResourceAsStream(String name) {
URL url = getResource(name);
try {
return url != null ? url.openStream() : null;
} catch (IOException e) {
return null;
}
}
这里都是要找老子帮忙的,他爸是李刚吧,nonono,是Bootstrap刚。。。
public URL getResource(String name) {
URL url;
if (parent != null) {
url = parent.getResource(name);
} else {
url = getBootstrapResource(name);
}
if (url == null) {
url = findResource(name);
}
return url;
}
其中url.openStream()打开Stream,具体如下:
public final InputStream openStream() throws java.io.IOException {
return openConnection().getInputStream();
}
好吧,我承认一看到openConnection就想到JDBC了。其实吧,资源啥的我也不太了解。看看getSystemResource
public static URL getSystemResource(String name) {
ClassLoader system = getSystemClassLoader();
if (system == null) {
return getBootstrapResource(name);
}
return system.getResource(name);
}
就是首先获取SystemClassLoader,如果失败,则去找BootstrapResource 谁让BootstrapLoader是老大呢。
底层是调用了这个方法获取资源的。
static URLClassPath getBootstrapClassPath() {
return sun.misc.Launcher.getBootstrapClassPath();
}
bak1:此处就引发了ClassLoader的加载机制,放在下篇学习。
角色之二:Class
中午吃饭的时候还和同事讨论ClassLoader的一些东西,暂时先看下Class吧
public InputStream getResourceAsStream(String name) {
name = resolveName(name);
ClassLoader cl = getClassLoader0();
if (cl==null) {
// A system class. 有的class是没有loader的,so this nei~~
return ClassLoader.getSystemResourceAsStream(name);
}
return cl.getResourceAsStream(name);
}
resolved完成path后,依然是由ClassLoader去处理,此处莫非是代理模式,我日,设计模式离我这么遥远吗??
bak2:此处就引发了设计模式,放在下篇学习
总结:其实我想说的是,萝卜青菜,各有所爱,不是不爱,是吃饱了
分享到:
相关推荐
java 读取properties文件代码
主要介绍了Python实现读取Properties配置文件的方法,结合实例形式分析了Python读取Properties配置文件类的定义与使用相关操作技巧,需要的朋友可以参考下
java如何读取properties配置文件
在javascript文件中读取properties文件需要的插件jquery.i18n.properties-min-1.0.9.js
JAVA读取properties的值,JAVA读取properties文件,JAVA读取properties的内容
js读取properties文件,很好用的。js读取properties文件,很好用的。js读取properties文件,很好用的。js读取properties文件,很好用的。
文件读取.rar文件读取.rar文件读取.rar文件读取.rar
java读取本地.db文件简单方法,sqlite数据库类型文件获取数据
利用Java的Properties 类读取配置文件信息! 读取Properties文件的例子
java实现properties文件读取
java读取properties文件的工具类,传入配置文件名字和其中的key就可以读取
ConfigFile configfile = ConfigFile.getInstance("ipConfig123.properties"); String ip = configfile.getkeyvalue("ip"); 可以取出ipConfig123.properties 文件中IP的内容
在web项目中读取yml配置文件的工具类.可以实现将 server : port : portnumber : 8081 转换为 key为"server.port.portnumber",值为"8081"的Map,String>集合
最高效,最简洁的读取properties文件的源码。二十行以内,需导入log4j包。 将文件代码拷贝到你的工程,如果提示你找不到 import org.apache.log4j.Logger; 直接点击该错误,选择自动添加log4j包。即可.....祝你好运...
[Java]读取文件方法大全.pdf
java文件读取方法.docjava文件读取方法.docjava文件读取方法.docjava文件读取方法.doc
java如何读取文件 。把固定的文件读取到程序中来。
java读取grib2文件,使用netcdfAll,内附jar包与例子,netcdfAll-4.3.jar为jdk6版本,netcdfAll-4.6.jar为jdk7版本
Java循环读取1指定目录下的文件.docJava循环读取1指定目录下的文件.docJava循环读取1指定目录下的文件.docJava循环读取1指定目录下的文件.docJava循环读取1指定目录下的文件.docJava循环读取1指定目录下的文件.doc...
java读取tar.gz压缩文件的jar包