首页 > 编程知识 正文

java有哪几种类,java properties

时间:2023-05-05 00:51:56 阅读:173956 作者:2635

另一方面,项目中需要经常读取配置文件(properties文件),因此读取方法总结如下。

1、用java.util.Properties读取

1属性p=new属性(; 2 //p需要InputStream对象才能读取文件,但要获取InputStream,请输入通过3 //1、绝对路径:的inputstream is=new file inputstream (file 4 //2,class.getresourceasstream(path ); 5 //3,class loader.getresourceasstream (path );

6p.load(Inputstreamis ); 7 is.close (; 8p.getstring(string ) key ) ) )。

2、用java.util.ResourceBundle读取

resourcebundlerb=resource bundle.get bundle (package name;

Rb.getstring(stringkey );

二. Class.getResourceAsStream与class loader.getresourceasstream的区别

首先,Java的getResourceAsStream包括以下内容:

1.class.getresourceasstream (string path ) :如果path不以(/)开头,则缺省情况下将从此类所在的软件包中获取资源,或者从ClassPath根目录开始只要在path中创建绝对路径,最终ClassLoader就会获得资源。

2.class.getclass loader.getresourceasstream (string path ) :缺省情况下来自ClassPath根,path不能以)/)开头。 最终classloader将获得资源。

3.servlet context.getresourceasstream (string path ) :缺省情况下,从WebAPP根获取资源,path在Tomcat中为)/)开头无关紧要。 当然这涉及到具体的集装箱实现。

4. Jsp下的内置APP对象是上述servlet上下文的实现之一。

其次,getResourceAsStream的使用方法大致分为以下几种。

首先,要加载的文件和. class文件位于同一目录中。 例如,com.x.y下面是类me.class,它包含资源文件myfile.xml

那么,应该有以下代码。

me.class.getresourceasstream (' my file.XML );

第2,在me.class目录的子目录之下,例如,在com.x.y的下面有类me.class,在com.x.y.file目录之下有资源文件myfile.xml

那么,应该有以下代码。

me.class.getresourceasstream (' file/my file.XML );

第三,它不在me.class目录下,也不在子目录下。 例如,com.x.y下有类me.class,com.x.file目录下有资源文件myfile.xml

那么,应该有以下代码。

me.class.getresourceasstream (/com/x/file/my file.XML );

总结起来,可能只有两种写法

第一、前面有“/”

其中,/表示项目的根目录,例如,项目名称为myproject,/表示myproject

me.class.getresourceasstream (/com/x/file/my file.XML );

第二,前面没有“/”

表示当前类的目录

me.class.getresourceasstream (' my file.XML );

me.class.getresourceasstream (' file/my file.XML );

最后,自己的理解:

getResourceAsStream读取的文件路径仅限于项目的源文件夹、项目的src根目录下以及类包中的任意位置,但配置文件路径位于源文件夹以外的文件夹中

错误:

class.getClassLoader ().getresource('******* ' ); 此语句抛出空指针异常java.lang.NullPointerException,并定位为getClassLoader ()返回空值

如果某个类是用bootstrap加载的,则当我们在此类中获取classloader时,某些jdk实现会返回null。

解决方案:

将代码更改为以下内容:

InputStream inputStream;

class loader cl=XXX.class.getclass loader (; if (足球!=null ) {

inputstream=cl.getresourceasstream (xx.properties );

}else{

inputstream=class loader.getsystemresourceasstream (' xx.properties ' );

}

propertiesdbprops=new properties (;

dprops.load(Inputstream;

inputStream.close (;

所以以防万一,我们最好使用自己写的类获得classloader。 那样的话就没有问题了。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。