`
tristan_wang
  • 浏览: 166811 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java读取Properties文件的六种方法

    博客分类:
  • J2SE
阅读更多
使用J2SE读取Properties文件的六种方式:
1.使用java.util.Properties类的load()方法:
InputStream in = new BufferedInputStream(new FileInputStream(FILENAME));
Properties p = new Properties();
p.load(in);

2.使用java.util.ResourceBunld类的getBundle()方法:
ResourceBundle rb = ResourceBundle.ResourceBundle.getBundle(FILENAME,Locale.getDefault())

3.使用PropertyResourceBundle
InputStream in = new BufferedInputStream(new FileInputStream(name));
ResourceBundle rb = new PropertyResourceBundle(in);

4.使用Class类的getResourceAsStream(String name)
5.使用class.getClassLoader()所得到的java.lang.ClassLoader的getResourceAsStream()方法
6.使用java.lang.ClassLoader类的getSystemResourceAsStream()静态方法
下面转自:http://blog.csdn.net/bincavin/archive/2010/03/09/5359047.aspx
通常,在实际项目中,为了便于配置管理,我们需要将一些配置管理信息存储在.properties文件中,然后直接从中读取,这样就避免了很多硬编码。下面,通过一个例子,详细讲解如何读取.properties文件的数据。

  1.建立一个包config,专门存放.properties等配置文件,在config包下建一个文件a.properties,为了便于测试,在a.properties下添加如下信息:

  name=kaka

  age=28

  2.建立一个包prop,用来测试。在prop包下建立LoadProp.java文件。

  3.有很多方法来读取.properties文件,现将主要方法罗列出来:

  a.通过class的getResourceAsStream()方法来读取

  
package prop;

  import java.io.IOException;

  import java.io.InputStream;

  import java.util.Properties;

  public class LoadProp {

  public static void main(String[] args) {

  LoadProp loadProp = new LoadProp();

  InputStream in = loadProp.getClass().getResourceAsStream("/config/a.properties");

  Properties prop = new Properties();

  try {

  prop.load(in);

  } catch (IOException e) {

  e.printStackTrace();

  }

  System.out.println(prop.getProperty("name", "none"));

  System.out.println(prop.getProperty("age", "none"));

  }

  }

  一定要注意的是,class里的getResourceAsStream()方法里参数的类路径一定要在前面加上"/",否则会报错

b.使用class的getClassLoader()方法所得的ClassLoader的getResourceAsStream()来读取 package prop;

  
import java.io.IOException;

  import java.io.InputStream;

  import java.util.Properties;

  public class LoadProp {

  public static void main(String[] args) {

  LoadProp loadProp = new LoadProp();

  InputStream in = loadProp.getClass().getClassLoader().getResourceAsStream("config/a.properties");

  Properties prop = new Properties();

  try {

  prop.load(in);

  } catch (IOException e) {

  e.printStackTrace();

  }

  System.out.println(prop.getProperty("name", "none"));

  System.out.println(prop.getProperty("age", "none"));

  }

  }

  ClassLoader的getResourceAsStream()方法与Class的getResourceAsStream()方法有点区别,在这里一定不要在类路径前面加上"/",否则会报错,是不是很奇怪。

  c.使用ResourceBundle来读取

  
package prop;

  import java.util.ResourceBundle;

  public class LoadProp {

  public static void main(String[] args) {

  ResourceBundle rb = ResourceBundle.getBundle("config/a");

  System.out.println(rb.getString("name"));

  System.out.println(rb.getString("age"));

  }

  }
  注意,getBundle()方法里的参数,是baseName,不要把后缀名写出来,并且不要加"/"。

  好了,这是读取.properties文件的几种主要方法,还有其他的方法,基本上都大同小异。另外,在Servlet中可以使用javax.servlet.ServletContext的getResourceAsStream()方法来读取.properties文件,这里就不详述了。

=========================
[size=xx-small]转帖自:http://lavasoft.blog.51cto.com/62575/62174[/size]
Java读取properties文件的思考

Java读取properties文件的方法比较多,网上我最多的文章是“Java读取properties文件的六种方法”,但在Java应用中,最常用还是通过java.lang.Class类的getResourceAsStream(String name) 方法来实现,但我见到众多读取properties文件的代码中,都会这么干:

InputStream in = getClass().getResourceAsStream("资源Name");

这里面有个问题,就是getClass()调用的时候默认省略了this!我们都知道,this是不能在static(静态)方法或者static块中使用的,原因是static类型的方法或者代码块是属于类本身的,不属于某个对象,而this本身就代表当前对象,而静态方法或者块调用的时候是不用初始化对象的。

问题是:假如我不想让某个类有对象,那么我会将此类的默认构造方法设为私有,当然也不会写别的共有的构造方法。并且我这个类是工具类,都是静态的方法和变量,我要在静态块或者静态方法中获取properties文件,这个方法就行不通了。

那怎么办呢?其实这个类就不是这么用的,他仅仅是需要获取一个Class对象就可以了,那还不容易啊--取所有类的父类Object,用Object.class难道不比你的用你正在写类自身方便安全吗 ?呵呵,下面给出一个例子,以方便交流。

import java.util.Properties; 
import java.io.InputStream; 
import java.io.IOException; 

/** 
* 读取Properties文件的例子 
* File: TestProperties.java 
* User: leizhimin 
* Date: 2008-2-15 18:38:40 
*/ 
public final class TestProperties { 
    private static String param1; 
    private static String param2; 

    static { 
        Properties prop = new Properties(); 
        InputStream in = Object.class.getResourceAsStream("/test.properties"); 
        try { 
            prop.load(in); 
            param1 = prop.getProperty("initYears1").trim(); 
            param2 = prop.getProperty("initYears2").trim(); 
        } catch (IOException e) { 
            e.printStackTrace(); 
        } 
    } 

    /** 
     * 私有构造方法,不需要创建对象 
     */ 
    private TestProperties() { 
    } 

    public static String getParam1() { 
        return param1; 
    } 

    public static String getParam2() { 
        return param2; 
    } 

    public static void main(String args[]){ 
        System.out.println(getParam1()); 
        System.out.println(getParam2()); 
    } 
}


运行结果:
151
152

Process finished with exit code 0


当然,把Object.class换成int.class照样行,呵呵,大家可以试试。

另外,如果是static方法或块中读取Properties文件,还有一种最保险的方法,就是这个类的本身名字来直接获取Class对象,比如本例中可写成TestProperties.class,这样做是最保险的方法。

分享到:
评论
3 楼 tristan_wang 2010-07-16  
JustDoNow 写道
下半部分“Java读取properties文件的思考”应该是转帖的熔岩的帖子吧 http://lavasoft.blog.51cto.com/62575/62174

已经注明。深表歉意
2 楼 JustDoNow 2010-07-16  
下半部分“Java读取properties文件的思考”应该是转帖的熔岩的帖子吧 http://lavasoft.blog.51cto.com/62575/62174
1 楼 JustDoNow 2010-07-16  
下半部分“Java读取properties文件的思考”应该是转帖的熔岩的帖子吧 http://lavasoft.blog.51cto.com/62575/62174

相关推荐

    java 读取properties文件代码

    在Java编程中,Properties文件是一种常用的配置文件格式,用于存储应用程序的配置参数或者环境设置。这些文件通常以键值对的形式存在,例如`key=value`。读取Properties文件是Java开发中的常见操作,特别是在需要...

    java 读properties 文件六种方法

    本文将详细介绍Java中读取Properties文件的六种方法,以及在Web应用环境下的一种额外方式。 ### 方法一:使用`java.util.Properties`类的`load()`方法 这是最直接的方法,通过创建`Properties`对象并调用其`load()...

    java读写properties配置文件

    ### Java读写Properties配置文件详解 #### 一、引言 在Java开发中,`Properties`类被广泛用于处理各种类型的配置文件。这些文件通常包含了应用程序运行时所需的配置信息,如数据库连接信息、系统参数等。`...

    Java读取properties文件的三种方式

    本文将详细介绍三种在Java中读取properties文件的方法。 1. 使用Properties类 Java的java.util.Properties类是专门用来处理.properties文件的。下面是一个简单的示例: ```java import java.io.FileInputStream; ...

    Java读取Properties文件的六种方法.txt

    ### Java读取Properties文件的六种方法 在Java开发中,`Properties`类是一个非常实用且常见的工具类,主要用于管理程序中的配置信息。通常情况下,这些配置信息会被存储在一个`.properties`文件中,并通过`...

    java读取properties六种方法

    以上六种方法覆盖了各种场景,从简单的文件读取到类路径资源的处理,再到Java 8及以后版本的流处理。选择哪种方法取决于你的具体需求,如文件位置、性能考虑以及对Java版本的支持。在实际项目中,应考虑代码的可读性...

    java读写properties文件,解决系统找不到指定路径,解决写入后读取正常,但文件数据未更新问题

    1. 相对类路径:如果你的Properties文件与Java源代码位于同一目录结构下,可以使用`getResourceAsStream()`方法,配合类路径来加载。例如: ```java InputStream in = getClass().getResourceAsStream("/config....

    Python实现读取Properties配置文件的方法

    为了在Python中读取这样的文件,我们可以创建一个名为`Properties`的类,该类包含两个方法:`__init__`和`getProperties`。`__init__`用于初始化类实例,并接收文件路径作为参数;`getProperties`方法负责打开文件,...

    java实现properties文件读取

    本篇将深入探讨如何使用Java来实现Properties文件的读取。 首先,我们需要了解Properties类在Java中的作用。`java.util.Properties`是Java提供的一个类,它继承了`Hashtable`,主要用于处理属性列表(键/值对)。...

    使用J2SE API读取Properties文件的六种方法

    本文将详细讲解使用J2SE API来读取Properties文件的六种方法。 1. **使用java.util.Properties类的load()方法** 这是最基本的方法,通过`FileInputStream`打开文件,然后使用`Properties`类的`load()`方法加载内容...

    java读取properties配置文件

    在Java编程中,`properties`文件是一种常用的存储配置信息的方式,它以键值对的形式组织数据,便于程序在运行时动态获取和修改配置。本文将详细介绍如何在Java中读取`properties`配置文件。 首先,我们需要了解`...

    java 改变Properties文件中的键值

    在Java代码中,首先需要导入`java.util.Properties`和`java.io.*`等相关的类库,以便进行读写Properties文件的操作。 2. **加载Properties文件** 使用`Properties`类的`load()`方法加载Properties文件。这个方法...

    Java读取Properties文件几种方法总结

    Java读取Properties文件几种方法总结 Java读取Properties文件是Java开发中常见的操作,Properties文件是一种常用的配置文件格式,可以存储各种配置信息。Java提供了多种方法来读取Properties文件,本文将总结六种...

    java读写properties文件,解决系统找不到指定路径,解决写入后读取正常,但文件数据未更新问题

    总结一下,处理Java中的Properties文件读写时,需要注意文件路径的准确性、文件的读写权限以及缓存问题。通过以上方法,应该能够有效解决描述中提到的问题。对于提供的"新建文本文档.txt",虽然不是Properties文件,...

    java读取properties文件(配置文件)

    java读取properties文件的工具类,传入配置文件名字和其中的key就可以读取

    JAVA读取properties文件的值

    // 加载properties文件 props.load(input); } catch (IOException ex) { ex.printStackTrace(); } finally { if (input != null) { try { input.close(); } catch (IOException e) { e.printStackTrace(); ...

    java读取.properties配置文件的几种方法

    下面将详细介绍几种在Java中读取`.properties`配置文件的方法。 1. 使用`java.util.Properties`类 `Properties`类是Java提供的一种内置机制,用于处理属性列表。它继承了`Hashtable`类,提供了加载和保存属性列表...

Global site tag (gtag.js) - Google Analytics