package cn.jcenterhome.util;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.util.Set;
public final class PropertiesHelper {
private String charset = "GBK";
private Properties properties = null;
private String fileName = null;
public PropertiesHelper(String fileName) throws IOException {
this.properties = new Properties();
this.fileName = fileName;
InputStream fis = new FileInputStream(fileName);
this.properties.load(fis);
fis.close();
}
public Properties getProperties() {
return properties;
}
public void setProperties(Properties properties) {
this.properties = properties;
}
public String getValue(String key) {
return properties.getProperty(key);
}
public void setValue(String key, String value) {
properties.setProperty(key, value);
}
public void saveProperties() throws IOException {
FileInputStream fis = new FileInputStream(fileName);
InputStreamReader fsr = new InputStreamReader(fis, charset);
BufferedReader br = new BufferedReader(fsr);
List<String> datas = new ArrayList<String>();
int index = -1;
while (br.ready()) {
index++;
datas.add(br.readLine());
}
br.close();
fsr.close();
fis.close();
Set<Object> keys = properties.keySet();
for (Object key : keys) {
boolean isnew = true;
for (int i = 0; i <= index; i++) {
if (datas.get(i).matches("^\\s*" + key + "\\s*\\=.*")) {
datas.set(i, key + " = "
+ properties.getProperty(key.toString()).replaceAll("\n", "\\\\n"));
isnew = false;
break;
}
}
if (isnew) {
index++;
datas.add(index, key + " = "
+ properties.getProperty(key.toString()).replaceAll("\n", "\\\\n"));
}
}
FileOutputStream fos = new FileOutputStream(fileName);
OutputStreamWriter osw = new OutputStreamWriter(fos, charset);
BufferedWriter bw = new BufferedWriter(osw);
for (String data : datas) {
bw.write(data);
bw.newLine();
}
bw.flush();
osw.flush();
fos.flush();
bw.close();
osw.close();
fos.close();
}
public String getCharset() {
return charset;
}
public void setCharset(String charset) {
this.charset = charset;
}
}