在Java开发中通常我们会存储配置参数信息到属性文件,这样的属性文件可以是拥有键值对的属性文件,也可以是XML文件,关于XML文件的操作,请参考博文【Java编程】DOM XML Parser 解析、遍历、创建XML。在该篇博文中,我将展示如何向属性文件写入键值对,如何读取属性文件中的键值对,如何遍历属性文件。

1、向属性文件中写入键值对

特别注意:

Properties类调用setProperty方法将键值对保存到内存中,此时可以通过getProperty方法读取,propertyNames()方法进行遍历,但是并没有将键值对持久化到属性文件中,故需要调用store()方法持久化键值对到属性文件中,这里的store方法类似于Android SharedPreferences的commit()方法

package com.andieguo.propertiesdemo;import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;
import java.util.Enumeration;
import java.util.Properties;import junit.framework.TestCase;public class PropertiesTester extends TestCase {public void writeProperties() {Properties properties = new Properties();OutputStream output = null;try {output = new FileOutputStream("config.properties");properties.setProperty("url", "jdbc:mysql://localhost:3306/");properties.setProperty("username", "root");properties.setProperty("password", "root");properties.setProperty("database", "bbs");//保存键值对到内存properties.store(output, "andieguo modify" + new Date().toString());// 保存键值对到文件中} catch (IOException io) {io.printStackTrace();} finally {if (output != null) {try {output.close();} catch (IOException e) {e.printStackTrace();}}}}
}

执行单元测试后,属性文件内容如下:

2、读取属性文件中的键值对

public class PropertiesTester extends TestCase {public void loadProperties() {Properties properties = new Properties();InputStream input = null;try {input = new FileInputStream("config.properties");//加载Java项目根路径下的配置文件properties.load(input);// 加载属性文件System.out.println("url:" + properties.getProperty("url"));System.out.println("username:" + properties.getProperty("username"));System.out.println("password:" + properties.getProperty("password"));System.out.println("database:" + properties.getProperty("database"));} catch (IOException io) {} finally {if (input != null) {try {input.close();} catch (IOException e) {e.printStackTrace();}}}}
}

执行单元测试方法,console输出的output如下:

3、遍历属性文件中的键值对

package com.andieguo.propertiesdemo;import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.Map.Entry;
import java.util.Properties;
import java.util.Set;import junit.framework.TestCase;public class PropertiesTester extends TestCase {public void printAll() {Properties prop = new Properties();InputStream input = null;try {String filename = "config.properties";input = getClass().getClassLoader().getResourceAsStream(filename);if (input == null) {System.out.println("Sorry, unable to find " + filename);return;}prop.load(input);//方法一:Set<Object> keys = prop.keySet();//返回属性key的集合for(Object key:keys){System.out.println("key:"+key.toString()+",value:"+prop.get(key));}//方法二:Set<Entry<Object, Object>> entrys = prop.entrySet();//返回的属性键值对实体for(Entry<Object, Object> entry:entrys){System.out.println("key:"+entry.getKey()+",value:"+entry.getValue());}//方法三:Enumeration<?> e = prop.propertyNames();while (e.hasMoreElements()) {String key = (String) e.nextElement();String value = prop.getProperty(key);System.out.println("Key:" + key + ",Value:" + value);}} catch (IOException ex) {ex.printStackTrace();} finally {if (input != null) {try {input.close();} catch (IOException e) {e.printStackTrace();}}}}}

4、其他方法

public void list(PrintStream out)

将属性列表输出到指定的输出流。此方法对调试很有用。

public void storeToXML(OutputStream os,Stringcomment) throws IOException

发出一个表示此表中包含的所有属性的 XML 文档。

5、参考

Java Properties File Examples(推荐)

Java Property File example with write, read, load from Classpath and property xml file

Java - The Properties Class

6、你可能感兴趣的文章

【Java编程】DOM XML Parser解析、遍历、创建XML

【Java编程】SAX XML Parser解析、生成XML文件

【Java编程】写入、读取、遍历Properties文件相关推荐

  1. android 获取properties文件路径,读取local.properties文件

    什么是local.properties文件 通过Android Studio创建一个Android工程后,在工程的根目录中都会生成一个名称为:local.properties文件,该文件一般用来存放该 ...

  2. java打开db文件_java 读取DB.properties文件方式 | 学步园

    读properties文件的时候,出现了或多或少的奇怪问题,这里把最终成功的方式描述一下. PropUtil工具类 public class PropUtil { private String fil ...

  3. Spring Cloud项目是如何读取bootstrap.properties文件的?

    提前说明:关于Spring Cloud和Spring Boot源码分析基于的版本如下所示 <!-- Spring Dependencies --> <dependency> & ...

  4. 【Java编程系列】Minio实现文件上传下载

    热门系列: [Java编程系列]Amazon S3实现文件上传下载 目录 热门系列: 1.前言 2.Minio实战代码 2.1 Minio环境部署 2.2 Minio的Sdk对接实现 2.2.1 Mi ...

  5. java SFTP下载,读取linux服务器文件

    一 SFTP下载,读取linux服务器文件 1 导入依赖 <dependency><groupId>org.apache.camel</groupId><ar ...

  6. java file gettext_避免使用.properties文件GNU Gettext Java

    首先,我的问题类似于这两个问题: >我想使用GNU Gettext实用程序对我的应用程序进行国际化.我设法通过使用正确的键值对创建一个translations.properties文件来使其工作 ...

  7. Java excel poi 读取已有文件 ,动态插入一列数据

    /*** 读取已有文件 ,动态插入一列数据* @param args*/public static void main(String[] args) {try {//读取文件File file = n ...

  8. 人工智能Java SDK:读取本地MP4文件,实时检测人脸

    人脸识别技术目前已经广泛应用于包括人脸门禁系统.刷脸支付等各行各业.随着人脸识别技术的提升,应用越来越广泛.目前中国的人脸识 别技术已经在世界水平上处于领先地位,在安防行业,国内主流安防厂家也都推出了 ...

  9. 使用java代码获取yml及properties文件中的内容,获取值

    获取properties文件中的内容 最近做项目一些值需要放在配置文件中,一开始使用的是properties文件,我这里没有使用注解@Value获取. 获取: InputStream in = Mes ...

最新文章

  1. 【转发】什么时候该用委托,为什么要用委托,委托有什么好处
  2. Python全栈开发——描述符
  3. 信息管理系统(Servlet+jsp+mvc+jdbc)
  4. Spring boot 将配置文件属性注入到一个bean中
  5. 设置MySQL自动增长从某个指定的数开始
  6. 【Flink】Flink时间之internalTimerService初始化
  7. python之list[index1:index2]是左闭右开
  8. db2嵌套查询效率_详解oracle嵌套循环及实例说明
  9. 「管理数学基础」1.5 矩阵理论:方阵的行列式因子、不变因子、初等因子
  10. SVN安装后bin中没有svn.exe,TortoiseSVN安装后bin目录中没有svn.exe;
  11. aodv包头分析-上
  12. adb 连接手机 cannot connect to xxx.xxx.x.xx:5555: 由于目标计算机积极拒绝,无法连接。 (10061)
  13. HDUOJ 4565 So Easy!
  14. vue清除地址栏参数
  15. 战地5离线bot模式_战地2怎么增加bot
  16. 权威机构发布行业白皮书,菜鸟有望成为数智航运时代的领军者
  17. Axure RP Extension for Chrome的安装
  18. 《霜冷长河》之《壮士》----英雄归来
  19. 柔宇科技掀起的柔性电子潮流,正在加速改变我们的生活
  20. Elasticsearch 索引模板

热门文章

  1. linux thunderbird,在 Linux 中安装 Thunderbird
  2. 关于9530/9630 R-UIM模式电信行货与水货比对测试的思考
  3. 服务器电源维修成都,成都电力电源维修
  4. RFID射频识别技术(一)第一讲
  5. iOS-AVPlayer的简单使用
  6. 颠覆传统下载体验 QNAP迅雷系列NAS重磅登场
  7. 人工智能—产生式推理
  8. 搜索引擎网站收录地址大全
  9. 云计算虚拟化环境下的安全防护
  10. 网聊是不是就要劈腿上床?