java读取properties配置文件

我就是我 2022-07-10 04:06 436阅读 0赞

今天要将以前一个项目的数据连接改成从properties文件中配置。找了好久,网上也不少,可就是读取文件时总是找不到文件在哪(我放在 classes目录下了)。最后终于成功,记下,以做纪念。

Java 代码

  1. package com.web.connection;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import java.sql.Connection;
  5. import java.sql.DriverManager;
  6. import java.sql.SQLException;
  7. import java.util.Properties;
  8. import java.util.logging.Level;
  9. import java.util.logging.Logger;
  10. public class Conn {
  11. private String fileName= “/db.properties” ; //这里是指放在classes下,如果有包的话,前面加包名即可。例:/com/web/db.properties
  12. private String driver = “” ;
  13. private String url = “” ;
  14. private String username = “” ;
  15. private String password = “” ;
  16. Connection conn=null ;
  17. public Connection getConn(){
  18. Properties p = new Properties();
  19. try {
  20. InputStream in = Conn.class .getResourceAsStream(fileName); //这里有人用new FileInputStream(fileName),不过这种方式找不到配置文件。有人说是 在classes下,我调过了,不行。
  21. p.load(in);
  22. in.close();
  23. if (p.containsKey( “driver” )){
  24. this .driver = p.getProperty( “driver” );
  25. }
  26. if (p.containsKey( “url” )){
  27. this .url = p.getProperty( “url” );
  28. }
  29. if (p.containsKey( “user” )){
  30. this .username = p.getProperty( “user” );
  31. }
  32. if (p.containsKey( “password” )){
  33. this .password = p.getProperty( “password” );
  34. }
  35. } catch (IOException ex) {
  36. Logger.getLogger(Conn.class .getName()).log(Level.SEVERE, null , ex);
  37. }
  38. System.out.println(p.getProperty(“driver” ));
  39. try {
  40. Class.forName(this .driver);
  41. conn = DriverManager.getConnection(this .url, this .username, this .password);
  42. } catch (SQLException ex) {
  43. ex.printStackTrace();
  44. System.out.print(“获取连接异常” );
  45. } catch (ClassNotFoundException ex) {
  46. System.out.print(“加载驱动出错” );
  47. ex.printStackTrace();;
  48. }
  49. return conn;
  50. }
  51. }

    package com.web.connection;

    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.util.Properties;
    import java.util.logging.Level;
    import java.util.logging.Logger;

    public class Conn {

    1. private String fileName="/db.properties";//这里是指放在classes下,如果有包的话,前面加包名即可。例:/com/web/db.properties
    2. private String driver = "";
    3. private String url = "";
    4. private String username ="";
    5. private String password = "";
    6. Connection conn=null;
  1. public Connection getConn(){
  2. Properties p = new Properties();
  3. try {
  4. InputStream in = Conn.class.getResourceAsStream(fileName);//这里有人用new FileInputStream(fileName),不过这种方式找不到配置文件。有人说是在classes下,我调过了,不行。
  5. p.load(in);
  6. in.close();
  7. if(p.containsKey("driver")){
  8. this.driver = p.getProperty("driver");
  9. }
  10. if(p.containsKey("url")){
  11. this.url = p.getProperty("url");
  12. }
  13. if(p.containsKey("user")){
  14. this.username = p.getProperty("user");
  15. }
  16. if(p.containsKey("password")){
  17. this.password = p.getProperty("password");
  18. }
  19. } catch (IOException ex) {
  20. Logger.getLogger(Conn.class.getName()).log(Level.SEVERE, null, ex);
  21. }
  22. System.out.println(p.getProperty("driver"));
  23. try {
  24. Class.forName(this.driver);
  25. conn = DriverManager.getConnection(this.url,this.username,this.password);
  26. } catch (SQLException ex) {
  27. ex.printStackTrace();
  28. System.out.print("获取连接异常");
  29. } catch (ClassNotFoundException ex) {
  30. System.out.print("加载驱动出错");
  31. ex.printStackTrace();;
  32. }
  33. return conn;
  34. }
  35. }

网 上文章常见的几种读取.properties文件的方式

1 、使用java.util.Properties类的load()方法 示 例:

Java代 码

  1. InputStream in = lnew BufferedInputStream( new FileInputStream(name));
  2. Properties p = new Properties();
  3. p.load(in);

    InputStream in = lnew BufferedInputStream(new FileInputStream(name));
    Properties p = new Properties();
    p.load(in);

2 、使用 java.util.ResourceBundle类的getBundle()方法
示例:

Java 代码

  1. ResourceBundle rb = ResourceBundle.getBundle(name, Locale.getDefault());

    ResourceBundle rb = ResourceBundle.getBundle(name, Locale.getDefault());

用ResourceBundle读取.properties文件可避免路径问题
我在jar里读取.properties文件时,总是找不到文件路径,后来用ResourceBundle读取.properties文件即可避免路径问 题,代码如下:

//process为文件名,切记不要加 .properties, URL是文件里的键名

Java 代码

  1. ResourceBundle bundle = ResourceBundle.getBundle( “com.ihandy.smsoc.app.process” );
  2. String s = bundle.getString(“URL” );
  3. System.out.println(s);
  4. pURL = s;

    ResourceBundle bundle = ResourceBundle.getBundle(“com.ihandy.smsoc.app.process”);

    1. String s = bundle.getString("URL");

    System.out.println(s);
    pURL = s;

3 、使用 java.util.PropertyResourceBundle类的构造函数
示例:

Java 代码

  1. InputStream in = new BufferedInputStream( new FileInputStream(name));
  2. ResourceBundle rb = new PropertyResourceBundle(in);

    InputStream in = new BufferedInputStream(new FileInputStream(name));
    ResourceBundle rb = new PropertyResourceBundle(in);

4 、使用class变量的 getResourceAsStream()方法
示例:

Java 代码

  1. InputStream in = 类 名. class .getResourceAsStream(name);
  2. Properties p = new Properties();
  3. p.load(in);

    InputStream in = 类名.class.getResourceAsStream(name);
    Properties p = new Properties();
    p.load(in);

5 、使用 class.getClassLoader()所得到的java.lang.ClassLoader的getResourceAsStream()方法 示 例:

Java 代码

  1. InputStream in = 类 名. class .getClassLoader().getResourceAsStream(name);
  2. Properties p = new Properties();
  3. p.load(in);

    InputStream in = 类名.class.getClassLoader().getResourceAsStream(name);
    Properties p = new Properties();
    p.load(in);

6 、使用 java.lang.ClassLoader类的getSystemResourceAsStream()静态方法 示例:

Java 代码

  1. InputStream in = ClassLoader.getSystemResourceAsStream(name);
  2. Properties p = new Properties();
  3. p.load(in);

    InputStream in = ClassLoader.getSystemResourceAsStream(name);
    Properties p = new Properties();
    p.load(in);

7 、Servlet中可以使用 javax.servlet.ServletContext的getResourceAsStream()方法 示例:

Java 代码

  1. InputStream in = context.getResourceAsStream(path);
  2. Properties p = new Properties();
  3. p.load(in);

发表评论

表情:
评论列表 (有 0 条评论,436人围观)

还没有评论,来说两句吧...

相关阅读

    相关 读取Properties配置文件

    通过读取properties文件获取配置项的值在开发中是很常用的,这种方式降低了变量和代码间的耦合,使得非开发人员也可以很容易的对系统的一些配置进行修改,比如配置数据库连接参数

    相关 java读取properties配置文件

    今天要将以前一个项目的数据连接改成从properties文件中配置。找了好久,网上也不少,可就是读取文件时总是找不到文件在哪(我放在 classes目录下了)。最后终于成功,记