標籤:sys move eclips public import int version sync extends
java 順序 讀寫 Properties 設定檔 支援中文 不亂碼
java 順序 讀寫 Properties 設定檔 ,java預設提供的Properties API 繼承hashmap ,不是順序讀寫的。
特從網上查資料,順序讀寫的代碼,如下,
import java.util.Collections;import java.util.Enumeration;import java.util.LinkedHashSet;import java.util.Properties;import java.util.Set;public class OrderedProperties extends Properties { private static final long serialVersionUID = -4627607243846121965L; private final LinkedHashSet<Object> keys = new LinkedHashSet<Object>(); public Enumeration<Object> keys() { return Collections.<Object> enumeration(keys); } public Object put(Object key, Object value) { keys.add(key); return super.put(key, value); } public synchronized Object remove(Object key) { keys.remove(key); return super.remove(key); } public Set<Object> keySet() { return keys; } public Set<String> stringPropertyNames() { Set<String> set = new LinkedHashSet<String>(); for (Object key : this.keys) { set.add((String) key); } return set; }}
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.OutputStream;import java.io.OutputStreamWriter;import java.util.Properties;public class PropertiesTest { public static void main(String[] args) { String readfile = "D:/eclipseworkspace/test/src/test.txt"; Properties pro = readPropertiesFileObj(readfile); // 讀取properties檔案 System.out.println(pro.getProperty("password0.9271224287974811")); pro.remove("password0.008229652622303574"); writePropertiesFileObj(readfile, pro); // 寫properties檔案 } // 讀取資源檔,並處理中文亂碼 public static Properties readPropertiesFileObj(String filename) { Properties properties = new OrderedProperties(); try { InputStream inputStream = new FileInputStream(filename); BufferedReader bf = new BufferedReader(new InputStreamReader(inputStream, "utf-8")); properties.load(bf); inputStream.close(); // 關閉流 } catch (IOException e) { e.printStackTrace(); } return properties; } // 寫資源檔,含中文 public static void writePropertiesFileObj(String filename, Properties properties) { if (properties == null) { properties = new OrderedProperties(); } try { OutputStream outputStream = new FileOutputStream(filename); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(outputStream, "utf-8")); properties.setProperty("username" + Math.random(), "myname"); properties.setProperty("password" + Math.random(), "mypassword"); properties.setProperty("chinese" + Math.random(), "中文"); properties.store(bw, null); outputStream.close(); } catch (IOException e) { e.printStackTrace(); } }}
java 順序 讀寫 Properties 設定檔