900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > java 顺序 读写 Properties 配置文件 支持中文 不乱码

java 顺序 读写 Properties 配置文件 支持中文 不乱码

时间:2020-09-08 02:36:51

相关推荐

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();}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。