在日常的Java程序开发中,Properties文件的读写是很常用的。经常有开发系统通过properties文件来当做配置文件,方便用户对系统参数进行调整。

那么本片就来简单的介绍下,如何使用Properties。

文件的读取

Properties类提供了Load方法,支持以inputstream为参数,读取配置文件。因此可以这样:

Properties props = new Properties();
//如果配置文件放在类目录下,可以直接通过类加载器读取
props.load(new FileReader("D:\\test.properties"));

不过上面的读取方法需要完整的文件路径,显然在开发中是很不方便的。

因此推荐下面这种方法,通过类加载器的路径来读取配置文件:

props.load(PropertiesTest.class.getClassLoader().getResourceAsStream(fileName));

属性的读写

通过getProperty可以取到文件的属性:

//获取属性值
System.out.println(props.getProperty("name"));
System.out.println(props.getProperty("age"));
System.out.println(props.getProperty("address","dalian"));//如果没有拿到属性值,会按照第二个参数作为默认值 //修改属性值
props.setProperty("name", "ttt");
System.out.println(props.getProperty("name"));

配置持久化

如果需要在程序运行时,持久化配置文件,也可以使用store方法:

//持久化配置文件
File file = new File("D:\\result.properties");
Writer fw = new FileWriter(file);
props.store(fw, "conmments");
fw.close();

源码测试

package xing.CodeJava.basic;

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.Writer;
import java.util.Properties; public class PropertiesTest {
public static void main(String[] args) {
String fileName = "test.properties";
try {
//读取配置文件
Properties props = new Properties();
// props.load(PropertiesTest.class.getClassLoader().getResourceAsStream(fileName));//如果配置文件放在类目录下,可以直接通过类加载器读取
props.load(new FileReader("D:\\TestCode\\CodeJava\\CodeJava\\src\\main\\java\\xing\\CodeJava\\basic\\test.properties")); //获取属性值
System.out.println(props.getProperty("name"));
System.out.println(props.getProperty("age"));
System.out.println(props.getProperty("address","dalian"));//如果没有拿到属性值,会按照第二个参数作为默认值 //修改属性值
props.setProperty("name", "ttt");
System.out.println(props.getProperty("name")); //持久化配置文件
File file = new File("D:\\TestCode\\CodeJava\\CodeJava\\src\\main\\java\\xing\\CodeJava\\basic\\result.properties");
Writer fw = new FileWriter(file);
props.store(fw, "conmments");
fw.close();
}catch(Exception e){
e.printStackTrace();
}
}
}

Java程序员的日常—— Properties文件的读写的更多相关文章

  1. Java程序员的日常——经验贴(纯干货)

    工作当中遇到的事情比较杂,因此涉及的知识点也很多.这里暂且记录一下,今天遇到的知识点,纯干货~ 关于文件的解压和压缩 如果你的系统不支持tar -z命令 如果是古老的Unix系统,可能并不认识tar ...

  2. Java程序员的日常—— 《编程思想》关于类的使用常识

    Java虽然利用JVM,让程序员可以放心大胆的使用,可是仍然会出现内存泄露等问题.世上没有绝对的银弹,因此也不能完全把所有的任务都交给JVM,了解Java中的初始化与垃圾回收还是必不可少的知识. 关于 ...

  3. Java程序员的日常—— 垃圾回收中引用类型的作用

    在Java里面,是不需要太过于关乎垃圾回收,但是这并不意味着开发者可以不了解垃圾回收的机制,况且在java中内存泄露也是家常便饭的事情.因此了解垃圾回收的相关知识就显得很重要了. 引用,在垃圾回收中是 ...

  4. Java程序员的日常 —— 多进程开发

    最近再弄进程管理相关的工作,因此必要的就涉及到各种系统下关于进程的管理. 这里简单的介绍下: 如何在Java中执行命令 在windows下肯定是dos命令了,而在linux则为shell命令.执行的方 ...

  5. Java程序员的日常—— FileUtils工具类的使用

    package cn.xingoo.learn.commons; import org.apache.commons.io.FileUtils; import org.apache.commons.i ...

  6. Java程序员的日常—— IOUtils总结

    以前写文件的复制很麻烦,需要各种输入流,然后读取line,输出到输出流...其实apache.commons.io里面提供了输入流输出流的常用工具方法,非常方便.下面就结合源码,看看IOUTils都有 ...

  7. Java程序员的日常——存储过程知识普及

    存储过程是保存可以接受或返回用户提供参数的SQL语句集合.在日常的使用中,经常会遇到复杂的业务逻辑和对数据库的操作,使用存储过程可以进行封装.可以在数据库中定义子程序,然后把子程序存储在数据库服务器, ...

  8. Java程序员的日常——SpringMVC+Mybatis开发流程、推荐系统

    今天大部分时间都在写业务代码,然后算是从无到有的配置了下spring与mybatis的集成. SpringMVC+Mybatis Web开发流程 配置数据源 在applicationContext.x ...

  9. Java程序员的日常 —— 多进程开发IO阻塞问题

    本篇仍旧是源于最近的工作,总结一下纪念那些年埋下的坑... 背景故事 需求:"使用进程方式启动另一个程序!" 开发:"OK! Runtime.getRuntime().e ...

随机推荐

  1. 如何在十分钟内插入1亿条记录到Oracle数据库?

    这里提供一种方法,使用 APPEND 提示,使得十分钟内插入上亿数据成为可能. -- Create table create table TMP_TEST_CHAS_LEE ( f01 VARCHAR ...

  2. linux关闭防火墙

    查看防火墙状态: sudo service iptables status linux关闭防火墙命令: sudo service iptables stop linux启动防火墙命令: sudo se ...

  3. swift 定制自己的Button样式

    swift的UIButton类中有些公开方法可以重写,所以,如果想写出自己的UIButton,只要继承UIButton类,并重写相应的方法即可. 系统的UIButton可以添加图片,也可以添加标题,但 ...

  4. 彻底了解android中的内部存储与外部存储

    我们先来考虑这样一个问题: 打开手机设置,选择应用管理,选择任意一个App,然后你会看到两个按钮,一个是清除缓存,另一个是清除数据,那么当我们点击清除缓存的时候清除的是哪里的数据?当我们点击清除数据的 ...

  5. JSON的故事

    1.介绍JSON http://www.json.org/ https://developer.mozilla.org/zh-CN/docs/JSON 2.json的序列化和反序列化 序列化方法 va ...

  6. mysql 基础语法

    以下为自己学习mysql 的一些笔记,以方便查询 目录 一. ALTER的 语法 二. 表的完整性约束 三. 索引的操作(mysql 数据库支持至少 16 个索引) 四. 视图的操作 五. 触发器的操 ...

  7. Two-Phase Commit (两阶段提交)

    1. 流程 1) Coordinator (协调者) 广播 VOTE-REQ 给所有 Participant (参与者) 2) Coordinator 等待 Participant 的结果 3) Pa ...

  8. vsftpd移植

    1.交叉编译 2.将生成的 vsftpd 复制到目标板 /usr/sbin 目录,vsftpd.conf 复制到目标板 /etc 目录,并添加 vsftpd 为可执行: 3.配置 使用 vi 打开 v ...

  9. android4.3 Bluetooth(le)分析之startLeScan分析

    BluetoothAdapter.java中有low enery(le)的一些方法,android提供了这些方法,但源码中并未找到这些方法的调用之处.本文档主要分析这类方法的执行流程,来了解下le到底 ...

  10. 菜鸟学自动化测试(八)----selenium 2.0环境搭建(基于maven)

    菜鸟学自动化测试(八)----selenium 2.0环境搭建(基于maven) 2012-02-04 13:11 by 虫师, 11419 阅读, 5 评论, 收藏, 编辑 之前我就讲过一种方试来搭 ...