📜  在Java读写属性文件

📅  最后修改于: 2022-05-13 01:55:12.159000             🧑  作者: Mango

在Java读写属性文件

属性文件是我们在Java编程语言中用来保存配置参数的文件。我们将这些文件称为资源包,因为它是我们将在应用程序中使用的资源包。

配置参数是什么?

配置参数是您在配置数据库时使用的参数,或者项目中有任何验证,您可以将它们添加为配置参数。

示例:您必须在基于 Java 的 Web 应用程序中使用DBConnect类进行数据库连接。我们将所有数据库 URL、数据库名称、数据库驱动程序保存在这个类中。我们可以在Java项目的资源文件夹中创建一个system.properties文件,而不是在此类中编写此配置参数。我们用于属性文件的扩展名是.properties

让我们看看属性文件:



  • 属性文件中的所有内容都以键值对的形式存在。
  • 因此,为了访问此文件中的任何值,我们可以使用密钥

为什么我们需要一个属性文件?

您可以在没有属性文件的情况下工作,但这里的优点是无论何时更改此文件,您都不必担心编译。

假设您正在创建一个基于Java 的Web 项目,因为您正在使用某个图像路径,并且该图像路径用于项目的不同模块中。因此,如果您想更改路径中的某些内容,您必须在每个模块中更改它而不是我们可以做的事情,我们可以创建一个属性文件,因为我们可以在其中包含图像路径的参数。所以,现在我们不需要改变每个模块。因此,这是使用属性文件的优势。

在这里,我们将创建我们的普通 JDBCMySqLConnection 类。Java

Java
package com.abc;
  
import java.sql.*;
  
public class DBConnect {
  
    public static Connection getConn()
    {
        Connection con = null;
  
        // driver name for mysql
        String loadDriver = "com.mysql.cj.jdbc.Driver";
  
        // url of the
        String dbURL = "jdbc:mysql://localhost:3306/DbName";
        // database
  
        // username to coonect db
        String dbUSERNAME = "root";
  
        // password to connect db
        String dbPASSWORD = "root";
  
        try {
            // load the driver
            Class.forName(loadDriver);
            con = DriverManager.getConnection(
                dbURL, dbUSERNAME, dbPASSWORD);
  
            // get the connection
            Statement st = con.createStatement();
            ResultSet rs
                = st.executeQuery("SELECT * FROM CUSTOMER");
            while (rs.next()) {
                System.out.println(
                    "ID -" + rs.getInt(1) + " || "
                    + "First-Name -" + rs.getString(2)
                    + " || "
                    + "LastName -" + rs.getString(4));
            }
        }
        catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
  
        return con; // return the connection obj.
    }
    public static void main(String[] args)
    {
        DBConnect.getConn();
    }
}


Java
url=jdbc:mysql://localhost:3306/DBName
driver=com.mysql.cj.jdbc.Driver //Driver class of mysql
userName=root //Db username
password=root //Db password


Java
package com;
  
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ResourceBundle;
  
public class DBConnect {
  
    public static Connection getConn()
    {
        ResourceBundle rd
            = ResourceBundle.getBundle("system");
        Connection con = null;
  
        // driver name for mysql
        String loadDriver = rd.getString("driver");
  
        // url of the database
        String dbURL = rd.getString("url");
  
        // username to coonect db
        String dbUSERNAME = rd.getString("userName");
  
        // password to connect db
        String dbPASSWORD = rd.getString("password");
  
        try {
            // load the driver
            Class.forName(loadDriver);
  
            // get the connection
            con = DriverManager.getConnection(
                dbURL, dbUSERNAME, dbPASSWORD);
            Statement st = con.createStatement();
            ResultSet rs
                = st.executeQuery("SELECT * FROM CUSTOMER");
            while (rs.next()) {
                System.out.println(
                    "ID -" + rs.getInt(1) + " || "
                    + "First-Name -" + rs.getString(2)
                    + " || "
                    + "LastName -" + rs.getString(4));
            }
        }
        catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
  
        return con;
    }
    public static void main(String[] args)
    {
        DBConnect.getConn();
    }
}


输出:

这是DBConnect。 Java项目中的Java文件。在这里,我们使用了这个类中的所有参数,因此,每当您的客户想要更改参数时,他/她都必须转到此文件并相应地更改内容。但是相反,我们可以在这里做的是将所有这些配置参数保存在 system.properties文件。



让我们在Java创建一个 system.properties 文件。

只需右键单击您的资源文件夹并创建一个属性文件。

Java

url=jdbc:mysql://localhost:3306/DBName
driver=com.mysql.cj.jdbc.Driver //Driver class of mysql
userName=root //Db username
password=root //Db password

现在,如您所见,我们有一个属性文件,我们在其中保存了所有这些参数,例如数据库的 URL、驱动程序、用户名和密码。我们需要在您的Java类中访问此属性文件。

让我们看看如何访问这个文件

我们必须使用 ResourceBundle 类并且必须使用密钥进行访问。

  • 首先我们将创建资源包的对象并将属性文件名传递给它。
  • 接下来,我们必须使用 getString(key) 方法来调用值。

Java

package com;
  
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ResourceBundle;
  
public class DBConnect {
  
    public static Connection getConn()
    {
        ResourceBundle rd
            = ResourceBundle.getBundle("system");
        Connection con = null;
  
        // driver name for mysql
        String loadDriver = rd.getString("driver");
  
        // url of the database
        String dbURL = rd.getString("url");
  
        // username to coonect db
        String dbUSERNAME = rd.getString("userName");
  
        // password to connect db
        String dbPASSWORD = rd.getString("password");
  
        try {
            // load the driver
            Class.forName(loadDriver);
  
            // get the connection
            con = DriverManager.getConnection(
                dbURL, dbUSERNAME, dbPASSWORD);
            Statement st = con.createStatement();
            ResultSet rs
                = st.executeQuery("SELECT * FROM CUSTOMER");
            while (rs.next()) {
                System.out.println(
                    "ID -" + rs.getInt(1) + " || "
                    + "First-Name -" + rs.getString(2)
                    + " || "
                    + "LastName -" + rs.getString(4));
            }
        }
        catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
  
        return con;
    }
    public static void main(String[] args)
    {
        DBConnect.getConn();
    }
}

输出: