Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支 持的配置文件,配置文件中很多变量是经常改变的,这样做也是为了方便用户,让用户能够脱离程序本身去修改相关的变量设置。今天,我们就开始Properties的使用。

Java中Properties的使用

Properties的文档说明:

The Properties class represents a persistent set of properties. The Properties can be saved to a stream or loaded from a stream. Each key and its corresponding value in the property list is a string.

Properties类的描述:

public class Properties extends Hashtable<Object,Object>

测试的项目结构如下:

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQEAAACfCAIAAAB2lfstAAAWOklEQVR4nO2d+1sT17rH/TvOj+c5x7NP7T7d1m6gtHVbtVJ7rKj76bG23a3V3XRj6W63V1CBIncUiYao3MQCwRgQqkhAqSIioBC8taA1IHJRIDcuIgyonfNDQrJmZq3JAkMmYd7Ps54+ZLLemTV2fWe9K1nfrHnsjBgwWfclqe7WxD1tT59oTxtrTTLVRWWmRO7Ym7pjb+q+JNWAydprHlm2s2Bm5591jMrgecFKo9TNAHyAeTML25ekGnl8kR2+gikvxl88GxscHCZrwKgMnudEoX+Z9s+UaWpAr5jHR5p2A55nhhrYFZPB2qrxhWU/TSpjWVZUA1P9z6vPY6My+CW7rl4xkxO8/HWBWYSogZqamuTkZNK72/bmsqYz+PL7i2U7C84bOhJPXv3ywFlcNKIBltUrvCYC0ACAAa+BixcvLliwYP78+aSwb7b/yD4qspcXPZrqssIf4rXfbSv4bltB291HZxvvL9mWvyJCc/3eo9IzNwXRWA3YO4peMW/elCbQBMTZhZBq/JTEdRAdZabOGezKv4KVRk63FAai6Rrae4UacBuL3AVMQHwSjAbsAvj4449FNPA3xQm2K4ftyhm/nxu1T6v6qfVM1wt7Odf9wsr8bq/WNjD+9dbTgmhsLmTvOZx+yRGK4y1uNddxdDhxdnDeOZGO7/oTF0h8cPM0QBkL44BPw9eAUwAbNmwQ0cCaz35kOw6N3T38feSp/aUdursTwpJdZ/lqu77n0bAgGp0TCzsuy7LCDInTrZH+NPVSMGlFxhbhSZA/8YH2o8LnNlcDtLGgAZ+GowFUAOIaCFmvGbuT8vXW4jiNMd8wKiyqqoFPvrvQ1TuCi+bkQshBcQ24hgu8BjCZBp0GiCmKXavo2wINUMWCBnwajgaSk5PnIyQmJpLCFq879emW4t3Z97Nqh7Jqh7Iuc0rSqe53Pynv7MEKgKXSgDAXcrwwKoNd2Q3ywpUVsSyrV7gSJzcawAYalUq9IMRRmZcL0cSCBnyaGX42ml9s+ENI+cLQqoWhlQtDK18PrXx9TdWiNZWL1la9veHCmn9UWWzj5GgaDbBic2IFbkqMmcbyz+mowpsT4+a/2Ek3Zk5MF+u6LvkfBZCKGWqAZdnRpxMebAc18EwFPMzMNSARoAHAw4AGALnjdxoAAA8DGgDkDmgAkDugAUDugAYAuQMaAOQOaACQOz6kgdz4vVI3AZAjEmhgzNpz43h4c+bm5szNtwu3b1+7PGxZYNiywLDlgfY/oj8N9X6rANkigQZq94cOd7eM9reN9reZW6t3hC5ur1MZaw+HLQtsv6Jqrz0ctizQ+60CZIvnNSBuRB6zdNYlBD5u2DN4J/HJnfghQ8zONYvvX1Le+/lg2LLA3y6l/3YxHTQAeBMPa8CtEbkhbUX/reyhDt1IZ8lIZ8nu9e85EiFuSd8ahg0XLFUWcyHDUmWABk9qgMaIXB2ziBnQo2XXunfbr6iMlw/ZcyGjSC5EsOoSXcgAQIHHNEBpRK7cs5B5VGwvTx9qOi7s0Ccuazi2uuHY6oqEJfVHV9cfXX0ufknzj18Y8jcJot1Zdb34Oy3AnMEzGqA3Ip/d9Rrz8ATz8ITtdnrD0VV9hoNM3xmm7yzTV870n2P6zzH9FcyA3nYv/2LKEsI5yFZd0AAwfTyjAXojcum2PzLtaqshoSZtqfVWOtOVz3QVMF2FTLeG6dYw3UVMz0nrHfWF1PcsnTf4we6tuqjBV68EOQAUePuz0VPfv2pp3Fud/BdL0z7GqGKMGYxRzbSrmfYjTPtRpuOYxZCsT1hqftCCDRdYdQVTBNesGZw2ABXe1oAm/JWKmEBz/Q6mNZ5pTWBaE5i2RKYtiWlLZu6mmOr3lMctNXXgBQAAs4G3NdBSmlIQvkC3fWHxzjdKIgJORwaVRgaVRgadjnyzPO69xoKIp4N9Xm4SIHN8aL0QAEgCaACQO6ABQO6ABgC5AxoA5A5oAJA7oAFA7oAGALnj3xpI+Mfn0l2cfoHedJfyTf3CO2yi7BX8TAN1qZuupGy6Yv9vyqZvli1CXzYe2uLFtoAG5gh+poGLCZtul0bf1Sf8UhbTmLUl+ZNlt0uj7ukTfimLqT+25VLCRi+2ZfY1AHgFH9KAuBHZzvkfvuhqyjLfK+ox5Nws3l2w9aOu65nme0U9LTmGol3VsX/zTlNZlgUNzBl8RQNujch2KvZ+dr9G2d2c3V57uKlwh+rvHzheXlFdO7G1MuoTcqjQZ4zd60mvmBes1DsWYKM7Xgp6sV4xL1ipVHBOwN/iCdn+lVsT3VaNs6uZ4wDPHME5A7IzG/9aoqcF8PiEBmiMyHbO7NpwrSDCoIu+Vhh58dBX+z5a0lgQYdBFX9dE/nxw87nIjwlxQp8xaf9jxJ5v7/3Y3f2cNV3vCjaD5W77x6/pHB0wgwRWA5TXEjktgEd6DVAakVmW3bYuZMu7ixLWL8n757r0L0Ji1r6zO3RJzNp3fli3OH3j+8e/XRe2ZCH+kyJhhyDuf4y+QfpbeGRql0GRcYBX03Ec+/MXhHGA6loipwXwSKwBeiMyy7Lmx4/yvl5tKI1ru3Dwxk+JP6u+iV67uPn0vtv6/bfOJF5Sbcn7epV1oB8TSaUB58MfNCAvJNYAvRHZTuGW0K6mTPuc2HAyImbtYuecuDFvm+abDwlxQp8xaf9jdxpwJTOkfincSBmvAftRVwTnzJQawGzazD8t4A7pc6FpceKrVc45ceOJbekb33fOia9kfZev+IAYifEZk+fEM9YAcp1ghUKkByMSnOrA09UA7lqY0wLu8DMN5Hy58lpBREtxzHXN7uq0zXn//KvzZVXSxuOb35e6gYD/4WcayPxs+dHP3nOWff/HeZn75QqpGwj4H36mAWbENmrudZatocvRlxNPR6RuIOB/+JkGeOA/BQKA6eDfGgCAlwc0AMgd0AAgd0ADgNwBDQByRy4aOJv6J2GpUi0eMcN6ArkjFw2UpSycmHzOKwbdxvKDb1l6bkrdOlEkX/ojeQNmGblooDjp9fGJ57zSXhPdfGpjWdpbZqIMkE0ApVp9M80uiK6C8ky7QQM+S319/ejoKGXlkwmLRsefO8vqqJMbU8seXE02XopuOrVRlxJMiEOWOnu1K2A8O9NkZobMl7+u/+HHGigqKtJqtRaLhaZyQdwbI2PPnCUgPCsgPMv5siDuDUIcutzfm94s0ID38G8NmEym7Ozs3t5et5XzYv88NPrMWewacL7Mi/0zIQ6rAbFNkZHMA6nGT0mE5mb0nMGu/MthBcCs90bXUuOSHqEG3MYid0Ha+5N/Mc7gyPVCSJpATgf/1gDLshaLRalU3r9/X7xyTkyA9cmks9g14HyZExNAiMPmQqKbIrvsOtxqHMsyp9u4TPZ8/fD+xAUSH9w8DVDG4k7nOmZUKlAPHM98ityLsJoP4/caYFm2r68vNjbWZrOJVD4WHWgenrSXzoHRgPCspdtPOI8ciybsCs6ZEws7LsuyItZkXn+aeimYtAqckSxeA/hAd4ZM5yuqWHEN8P5FuMp0U8138XsNWK1WmnEgY2/QwNCkvTTdNwWEZ4XGnHQeydgbRIjj5ELIQXEN4PZORjWAmVXQaYA4HUH3bHY2i6sBqlhRDRiVwbhfdnG6N1EHG+YHYHwV/9aA2WymnA8od7/ZZ5uoan54oPjayt2FAeFZiSfr+2wT9qLc/SYhjkIDRGsyx83ItRejiRT2x1tIuZAgELNns7MdvFyIJpZ3Xe4DHhES/96CFQrnPxSpmq/i3xqg/1zoQERwr3Wi+kZ3QHjWioiC3XmX2/tGe60T9nIgguKzUc5B3v9Y8pxYgZsSYxIF/jkdVXhzYlyGgZ10Y+bEdLHc6/KSHNcpELc0K+jqpGo+ih9rYFrfDyTvfKvbzJBK8s63ZqGB/pAH0DBX7oOEH2tgWsRvf/uhiSGV+O1vz8I150jfmetfE8tGAz9sfUe8zMI1/V8DjlTJv2/CLXLRAACQAA0Acgc0AMgd0AAgd0ADgNwBDQByBzQAyB0f0gAz8Csz8KvUrZAU7vLsOf6xvM/gExp4MTlmqt71MOet/oow97V5i9KES5t5x4nL6yVf2ivo6FJooEMXoo4KUesaHK9bU9UZWrFl6LQ0nI8KUUeFqKNCzrfaj/QYMhxH1FEh6qjUDlJoayoS5cJWG4aEh6ijQrS1PY72Z2hn3FCPaYBy9c6vpiFe+c068vuL5935KyxVrz48/s7zp+7WwGFMG47DwpWW5FOgi8ToO5tnu6bI2byqAU5v84wGGs5zur69u/cYMjA9m0uPISNEnZF63m1Nk1brVFFrqk9ogHIVZ+q1e19UtjnL36va9l/7jWVZa/2BvpI3Hp1609b8o5srETSALJR014Gwi0GpAA3QYdJqMSeh0QBtTVttGG/smkEz7XhSAzTu3n/7IPo/1qc4y79/lPzqp/tZlmXM9x9k/8VUscCYvcrNlfAaQFd2TWscEIZzrVGujElotxU6dOm3N8a1k7tKGedFFliZicuw7XUUCtx9oYhpwKTVcvKZHkNGiLa2x/6mrTbMUZNfjeWOA048qIGG81FhBhOnzTTnxeJJDbAU7t7u/sEVebFoef/H2A9LYj8siTVmrTKVL7h7+J3RbtEfvcLPB/iGQLrpAN5p5RhR3NhtsbZg+u2NcUf5K/WFXmSB7Rjj3BXE8u6LC1kDPQbdlBhaUx3pO/puxpQwhNUcf/OSfu58wPkUx+BOA7zByqc0wFK4e9eW/BBRtZdX3tXsGqjLeXA8oKvwta7SPWJXwo0D3Ac7bSLh0ArHEsgiXUXUbkt06FJu7YprJ38cEL5B0CVH7kJDGe++OIjnQsg01N6bpx7AaDqOqcY97uju2J7tnDojz3U3GhC861MaoHH3/teRzYE53/LKf2ZsmhweuBkXZKn6b0N00POJp6RwrMtQMM2lT6Y5z0/+T5lMnQ1jt8U7dL2rAbxzF2NJw92XA54GXHm2SauNmsp8kB7foQvR1vbYasOQtzDVEJx5kYdyIeFVfEcDNO7ey3vWayPXYsvlvR//evij3lMLfkkLGrh+lnACYt6PvEExJ8Za4nm+WHG7Ld4W7EkN4LzIgo8BMM5d3GnR++LC1QCS8SMDgq02zPWAN2m1GannM6Ye29hqJq3Wleo4c/eZasCk1SKjhF2EnOq+owGaz4WqwpffSvpfYWmJW1kVvry/sfTXA4HdRa+0pPxVGCvI4TEPS2cij/3igFsVM1/g2uNF7bbcs+AmCVQa4DST9yzHeJFxt2yPdjl3MY8A3n2hODXA/6IASd+1ulTk0dtjyHBfDf0sn/D9AJr8sMKzuWJRDXD14MBHNED5/UC5YvHNhJXC0hz7frli8eSTwSvfLbJe+MPlbxeNPn7gqbbR48VfU/QqIvfFnw/4Iz6iAUpyV88v3PA6pqxfmLt6PsuyN5VfNex6/fzG/3lw7riX2zZnFyiI3pfg8e9n+ND3xJQM93WLFJZlhzp+6aktYwbNXm4Y+knmXGKu3pcH8Yn1QgAgIaABQO6ABgC5AxoA5A5oAJA7oAFA7oAGALnjQxqYBT8xd2GotFB+BT0bdso5/6u5L4dPaIDaT0wyEJNr+0T3Z1mWcvsZ0IAE+JefmGQgxuNbi38oNUD1FuBJ/MtPTDIQ4wENADT4l5+YZCBmhdZexOaFmsLQHErgzSX5g5VCTzC2pjBH45rNaHMhz1qKZ7zDsVzwLz8xyUCMtfbynLRutwQm+4NdfdKlL25/JsZyut70NeAZSzH2n8R5VPbjjX/5iQkGYry1F/kfTrMlsHt/8NRPsgizGmwsr9o05sSethRzFY27R/wgJRP8y09MsDISEn+OBtz2P/f+YFENCGO9owEaSzGqAWJXR23T8sK//MQkAzHW2svLhYQVhL+/IO4PntIAp6ZeOfUoxcVyPZgzyIU8YikmDp8OTRF2OJYL/uQnJhuI8dM6zlOPOHHknZ5XB6sBtCbPaMydV6LzTyVxHOCkJrNhKeZ/lID5hxI0XUaAnxiQO+AnBuQO+IkBueMT64UAQEJAA4DcAQ0Acgc0AMgd0AAgd0ADgNwBDQByx780MOWamQ3DISBXJNDAmLWnSf351dTVV1NXN6k/H7P2uI9xABoAPI+31wuxLFubGjpuMb4YN78YNw93tzRmfE59EaF7EjQAvCzeXjc6ZumsSwh8XL9n8E7ikzvxQ4aYxz/vuJ39UbNqVbNq1a28LyZGRc4AGgA8j7f9xA1pK/pvZQ916EY6S0Y6S0YeFA8ZdYPGU8OdPw13/mRpK2hSryNHo7mQuOkWAGjxtp+4OnoRM6AXKdXRi8gXwWsAZ7oFAFq87Seu3LOQ6S22l6edGmPlv5py1tQdWlp3aGmdcmmdcuml5DevHl559fDKq4c/EESTxgFnBUiNgGnjbT/x2V2vMQ9PMA9P2G6n1x9ZOXDjENN3huk7y/SdZfrLmf5zTH8FM6C33cu/mLJEEA0aADyPt/3Epdv+yLSrrYaEmrSl1lvpTFc+05XPdBUw3YVMt4bpLmJ6TlrvZFxIfc/SeUMQTciFMKZbAKDF258Lnfr+VUvjnurkv1ia9jFGFWNUMcYMpl3NtB9h2o8yHccshiR9wlLzgxZcNGEcwJhuAYAWb38/oAl/pSIm0Fy/g2mNY1rjmdYEpi2RaUti2pKZuymm+t3n4pebOrACAIBZwdvfE7eUpRWEL9BtX1i8842SiIDTkUGlkUGlkUGnI4Mq4kOuF+15Otjn5SYBMse/1gsBgOcBDQByBzQAyB3QACB3QAOA3AENAHIHNADIHWk0UKNPFpar1QdHR0yStAeQM9Jo4OdzqROTz3nlVlVUTeXBQTFrJf0ue761Hx8tsImqFEijgcqzaeMTz3mlvSb6ZmV0dYXSZiWtugMNAJ5HGg2UlylHx58f0jQmZNVEHNR/s+/06PjzB1eTjZeiW/RR+jOHCXFzUgOw3ltipNFAWYlqZOwZqZSVqAhxoAHA80ijAZ3uyNDos0Oaxv0n6hIyL0WrLuxKq/hX0pktsSVDo890uiOEOM5uwRgXDW8TUm5N1F0gMF1SbwbM2duRtz8S1tYsvi9yMGezWdhIWAqk0UDRyUzrk0lSKTqZSYjD7RZM1IBwX+Gp0QEzSFBuBszdZZhUzXWcZl9k5AZgI2EpkEYD+Zoc8/AkdhwwD0/ma3IIcbgd8kTGAeFeesS9eOk2QuWLh7Rn8NRLmn2RsRqAjYS9iDQayM3PGxiaJJXc/DxCnA9qAPtzd4gG3O/HStAAbCTsLaTRQGZefp9tAjsO9NkmMvPyCXEkDSB7VItqwH6U+0uNrr/cbwYszIWEV+Y3w+2+yKRcCDYS9hLSaECdq+m1TpCKOldDiMP3bOdMEdmgF1MT6b9TvZT3u6XuNwNmxebEWFszxb7Ijiq8OTFsJOwtpNGAMkvbbWYOaRpTcmtj1NU7D1R8G1fabWbsRZml9XqLXvLJCg9mP0YaDRw4pntoYkjlwDGd11sEGpAv0mggSX1avHi9RaAB+QJrpwG5AxoA5A5oAJA7oAFA7oAGALnzUhqw2IYyC8pUx3Wq47qcwrIno0/Rd/tsTz5NKnu55gHArPP/wWpC48VzwG0AAAAASUVORK5CYII=" alt="" />

一、在huhx.properties文件中,我们为也方便,加入一条数据:

name=huhx

二、将huhx.properties文件加载读取,得到相应的属性

Properties properties = new Properties();
FileInputStream fis = new FileInputStream("huhx.properties");
properties.load(fis);
System.out.println(properties.get("name"));

properties.load()执行之后,fis.close方法对于properties.get(key)没有什么影响。因为load方法已经将数据解析读取到了Property中。

三、Properties的list方法的使用

PrintStream printStream = System.out;
properties.list(printStream);

list方法的具体代码:

public void list(PrintStream out) {
out.println("-- listing properties --");
Hashtable h = new Hashtable();
enumerate(h);
for (Enumeration e = h.keys() ; e.hasMoreElements() ;) {
String key = (String)e.nextElement();
String val = (String)h.get(key);
if (val.length() > 40) {
val = val.substring(0, 37) + "...";
}
out.println(key + "=" + val);
}
}

四、Properties的store方法的使用

OutputStream outputStream = new FileOutputStream("huhx.txt");
properties.store(outputStream, "comments");

五、Properties的storeToXML方法的使用

OutputStream outputStream2 = new FileOutputStream("huhx.xml");
properties.storeToXML(outputStream2, "comments");

六、最终生成的文件如下:

huhx.txt:

#comments
#Thu May 19 19:19:36 CST 2016
name=huhx

huhx.xml:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>comments</comment>
<entry key="name">huhx</entry>
</properties>

PropertiesTest.java:

package com.huhx.linux;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.util.Properties; public class PropertiesTest { public static void main(String[] args) throws Exception {
// 一般Properties的使用
Properties properties = new Properties();
FileInputStream fis = new FileInputStream("huhx.properties");
properties.load(fis);
System.out.println(properties.get("name")); // 以下是测试的部分
PrintStream printStream = System.out;
properties.list(printStream);
OutputStream outputStream = new FileOutputStream("huhx.txt");
properties.store(outputStream, "comments");
OutputStream outputStream2 = new FileOutputStream("huhx.xml");
properties.storeToXML(outputStream2, "comments");
}
}

PropertiesTest.java

七、属性文件中占位符的使用

huhx的文件内容如下:

word=I loves {0} and {1}

java的代码如下:

String word = properties.getProperty("word");
String lovesWord = MessageFormat.format(word, "android", "linux");
System.out.println(lovesWord); // I loves android and linux

友情链接

05-11 13:04