Chào các bạn đã đến với chủ đề tiếp theo của mình. Ở chủ đề này, mình sẽ tiếp tục giới thiệu đến các bạn về cách đọc và ghi dữ liệu vào properties file trong Java.
Nội dung
1. Properties file là gì?
Properties file (.properties) là file chủ yếu được sử dụng để lưu trữ các tham số có thể cấu hình của một ứng dụng. Các giá trị trong Properties là được quản lý theo dạng các cặp key/value. Trong mỗi cặp, key/value là các giá trị có kiểu String. Key được sử dụng để truy xuất value, giống như tên biến được sử dụng để truy xuất giá trị của biến.
Java cung cấp lớp java.util.Properties để quản lý các properties. Lớp này cung cấp một số các phương thức như sau:
- Tải các cặp key/value vào một đối tượng Properties
- Lấy ra một giá trị dựa vào key
- Liệt kê các key và giá trị của từng key,
- Lưu các properties vào một stream.
- …
2. Ghi vào properties file
Ví dụ mình sẽ tạo file config.properties. Đoạn code sample bên dưới sẽ ghi các giá trị vào file này
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Properties;
public class WritePropertiesFile {
public static void main(String[] args) {
Properties prop = new Properties();
OutputStream output = null;
try {
output = new FileOutputStream("config.properties");
// set the properties value
prop.setProperty("remote.server", "192.168.1.1");
prop.setProperty("remote.server.port", "8080");
prop.setProperty("remote.user", "admin");
prop.setProperty("remote.password", "admin");
// save properties to project root folder
prop.store(output, null);
} catch (IOException io) {
io.printStackTrace();
} finally {
if (output != null) {
try {
output.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
Sau khi run, file config.properties sẽ được sinh ra với nội dung như sau:
#Tue Aug 29 14:19:05 ICT 2023
remote.user=admin
remote.password=admin
remote.server=192.168.1.1
remote.server.port=8080
3. Đọc properties file từ thư mục hiện tại
Tạo file config.properties trong cùng thư mục với java resources.
3.1. Read all key-value
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class ReadPropertiesFile {
public static void main(String[] args) {
Properties prop = new Properties();
InputStream input = null;
try {
input = new FileInputStream("config.properties");
// load a properties file
prop.load(input);
// get the property value and print it out
prop.entrySet().forEach(e -> System.out.println(e.getKey() + " : " + e.getValue()));
} catch (IOException ex) {
ex.printStackTrace();
} finally {
if (input != null) {
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
Sau khi run kết quả như sau:
3.2. Read value by key
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class ReadPropertiesFile {
public static void main(String[] args) {
Properties properties = new Properties();
InputStream input = null;
try {
input = new FileInputStream("config.properties");
// load properties from file
properties.load(input);
// get property by name
System.out.println(properties.getProperty("remote.user"));
System.out.println(properties.getProperty("remote.password"));
System.out.println(properties.getProperty("remote.server"));
System.out.println(properties.getProperty("remote.server.port"));
} catch (IOException e) {
e.printStackTrace();
} finally {
// close objects
try {
if (input != null) {
input.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
Sau khi run kết quả như sau:
4. Đọc properties file từ classpath
Tạo file config.properties trong folder resources
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class ReadPropertiesFile {
public static void main(String[] args) {
Properties prop = new Properties();
InputStream input = null;
try {
String filename = "config.properties";
input = ReadPropertiesFile.class.getClassLoader().getResourceAsStream(filename);
if (input == null) {
System.out.println("Sorry, unable to find " + filename);
return;
}
// load a properties file from class path, inside static method
prop.load(input);
// get the property value and print it out
prop.entrySet().forEach(e -> System.out.println(e.getKey() + " : " + e.getValue()));
} catch (IOException ex) {
ex.printStackTrace();
} finally {
if (input != null) {
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
Sau khi run kết quả như sau:
5. Lời kết
Như vậy mình đã giới thiệu xong cách làm việc với properties file trong Java. Cảm ơn các bạn đã theo dõi bài viết của mình. Hẹn gặp lại các bạn ở những chủ đề tiếp theo. Chúc các bạn thành công. Bái bai.
Nguồn:
https://viblo.asia/p/java-vi-du-ve-thao-tac-voi-properties-file-gDVK2kGmZLj