Java Property类使用详解
在Java中,经常需要进行属性配置操作,而Java的Property类正是用来读写属性文件的。本文将详细讲解Java Property类的使用。
创建属性文件
属性文件通常以".properties"为后缀,用于存储键值对的配置信息。我们可以用文本编辑器手动创建属性文件,格式如下:
# This is a comment
name=Tina
age=18
加载属性文件
Java Property类可以用于读取和写入属性文件,我们可以通过以下代码来加载属性文件:
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class PropertyDemo {
public static void main(String[] args) {
Properties prop = new Properties();
InputStream input = null;
try {
input = new FileInputStream("config.properties");
// 加载属性文件
prop.load(input);
// 获取属性值
String name = prop.getProperty("name");
String age = prop.getProperty("age");
System.out.println("Name: " + name);
System.out.println("Age: " + age);
} catch (IOException ex) {
ex.printStackTrace();
} finally {
if (input != null) {
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
上面的代码将读取"config.properties"属性文件,并输出其中的"Name"和"Age"属性值。需要注意的是,属性文件必须放在Java项目的根目录中,否则需要使用文件的绝对路径。
写入属性文件
我们可以使用下面的代码来写入属性文件:
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Properties;
public class PropertyWriteDemo {
public static void main(String[] args) {
Properties prop = new Properties();
OutputStream output = null;
try {
output = new FileOutputStream("config.properties");
// 设置属性值
prop.setProperty("name", "Tina");
prop.setProperty("age", "18");
// 写入属性文件
prop.store(output, null);
System.out.println("Write to properties file succeeded.");
} catch (IOException io) {
io.printStackTrace();
} finally {
if (output != null) {
try {
output.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
上面的代码将在项目的根目录下创建或覆盖"config.properties"文件,并将"name"和"age"属性写入该文件中。
示例说明
示例一
假设我们需要在一个Java Web项目中读取数据库的连接信息,我们可以将连接信息写入属性文件,然后使用Property类进行读取。
属性文件:
# database properties
db.url=jdbc:mysql://localhost:3306/mydatabase
db.username=root
db.password=admin
Java代码:
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class DatabaseUtil {
private Properties prop = null;
public DatabaseUtil(String filename) {
prop = new Properties();
InputStream input = null;
try {
input = new FileInputStream(filename);
prop.load(input);
} catch (IOException ex) {
ex.printStackTrace();
} finally {
if (input != null) {
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public String getUrl() {
return prop.getProperty("db.url");
}
public String getUsername() {
return prop.getProperty("db.username");
}
public String getPassword() {
return prop.getProperty("db.password");
}
}
示例二
假设我们需要在一个Java项目中将日志信息写入属性文件中,我们可以使用Property类的方法来实现。另外,我们还可以将属性文件中的日志级别动态配置,从而方便地进行日志级别调整。
属性文件:
# logging properties
log.level=INFO
log.output=file
log.file.path=/var/log/app.log
Java代码:
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Properties;
public class LogUtil {
private static Properties prop = null;
public static void setLogLevel(String level) {
if (prop == null) {
prop = new Properties();
}
OutputStream output = null;
try {
output = new FileOutputStream("log.properties");
prop.setProperty("log.level", level);
prop.store(output, null);
} catch (IOException io) {
io.printStackTrace();
} finally {
if (output != null) {
try {
output.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static void log(String message) {
if (prop == null) {
prop = new Properties();
}
InputStream input = null;
try {
input = new FileInputStream("log.properties");
prop.load(input);
String level = prop.getProperty("log.level");
if ("INFO".equals(level)) {
System.out.println("INFO: " + message);
} else if ("DEBUG".equals(level)) {
System.out.println("DEBUG: " + message);
} else if ("ERROR".equals(level)) {
System.out.println("ERROR: " + message);
}
} catch (IOException ex) {
ex.printStackTrace();
} finally {
if (input != null) {
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
上述示例代码演示了如何将日志信息写入"log.properties"属性文件中,并根据动态配置的日志级别输出日志信息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java Property类使用详解 - Python技术站