使用java.util.Properties提供的类,读取properties文件的时候,读出来的是乱序的
如下边的情况
import java.io.*; import java.util.Arrays; import java.util.Enumeration; import java.util.List; import java.util.Properties; public class PropertyDemo { public static List<String> old = Arrays.asList("自来水","纯净水", "矿泉水","山泉水" ); public static void main(String[] args) { initType(); } public static void initType() { String path = System.getProperty("user.dir").replaceAll("\\\\", "/"); path = path + "/waterType.properties"; File file = new File(path); Properties properties = new Properties(); if (!file.exists()) { try { FileOutputStream oFile = new FileOutputStream(path, true); int i = 0; int len = old.size(); for (; i < len; i++) { properties.setProperty(String.valueOf(i + 1), old.get(i)); } properties.store(oFile, ""); oFile.close(); } catch (IOException e) { e.printStackTrace(); } } try { InputStream in = new BufferedInputStream(new FileInputStream(path)); properties.load(in); in.close(); } catch (IOException ex) { ex.printStackTrace(); } //遍历 Enumeration<?> e= properties.propertyNames(); while (e.hasMoreElements()){ String key = (String) e.nextElement(); String value = properties.getProperty(key); System.out.println(key + "=" + value); } } }
输出
4=山泉水
3=矿泉水
2=纯净水
1=自来水
保存到文件的顺序也是如此
那如果想是有序的,怎么办呢?
自定义一个Properties 类
import java.util.*; public class OrderedProperties extends Properties { 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 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.*; import java.util.*; public class PropertyDemo { public static List<String> old = Arrays.asList("自来水","纯净水", "矿泉水","山泉水" ); public static void main(String[] args) { initType(); } public static void initType() { String path = System.getProperty("user.dir").replaceAll("\\\\", "/"); path = path + "/waterType.properties"; File file = new File(path); Properties properties = new OrderedProperties(); if (!file.exists()) { try { FileOutputStream oFile = new FileOutputStream(path, true); int i = 0; int len = old.size(); for (; i < len; i++) { properties.setProperty(String.valueOf(i + 1), old.get(i)); } properties.store(oFile, ""); oFile.close(); } catch (IOException e) { e.printStackTrace(); } } try { InputStream in = new BufferedInputStream(new FileInputStream(path)); properties.load(in); in.close(); } catch (IOException ex) { ex.printStackTrace(); } //遍历 Set<String> e = properties.stringPropertyNames(); for (String one : e) { String key = one; String value = properties.getProperty(one); System.out.println(key + "=" + value); } } }
输出
1=自来水
2=纯净水
3=矿泉水
4=山泉水
保存到文件的顺序也是如此