Giải pháp của hoat4 rất thanh lịch và đơn giản. Nó hoạt động cho tất cả các tệp ini lành mạnh . Tuy nhiên, tôi đã thấy nhiều có ký tự khoảng trắng chưa thoát trong khóa .
Để giải quyết vấn đề này, tôi đã tải xuống và sửa đổi một bản sao của java.util.Properties
. Mặc dù đây là một chút không chính thống và ngắn hạn, các bản mod thực tế chỉ có một vài dòng và khá đơn giản. Tôi sẽ đưa ra một đề xuất cho cộng đồng JDK để bao gồm các thay đổi.
Bằng cách thêm một biến lớp bên trong:
private boolean _spaceCharOn = false;
Tôi kiểm soát quá trình xử lý liên quan đến việc quét tìm điểm phân tách khóa / giá trị. Tôi đã thay thế mã tìm kiếm ký tự khoảng trắng bằng một phương thức private nhỏ trả về boolean tùy thuộc vào trạng thái của biến trên.
private boolean isSpaceSeparator(char c) {
if (_spaceCharOn) {
return (c == ' ' || c == '\t' || c == '\f');
} else {
return (c == '\t' || c == '\f');
}
}
Phương pháp này được sử dụng ở hai nơi trong phương thức private load0(...)
.
Cũng có một phương pháp công khai để bật tính năng này, nhưng sẽ tốt hơn nếu sử dụng phiên bản gốc của Properties
nếu dấu phân cách không gian không phải là vấn đề đối với ứng dụng của bạn.
Nếu có hứng thú, tôi sẵn sàng đăng mã vào IniFile.java
tệp của mình . Nó hoạt động với một trong hai phiên bản của Properties
.