Java程序员的日常—— Properties文件的读写
在日常的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文件的读写的更多相关文章
- Java程序员的日常——经验贴(纯干货)
工作当中遇到的事情比较杂,因此涉及的知识点也很多.这里暂且记录一下,今天遇到的知识点,纯干货~ 关于文件的解压和压缩 如果你的系统不支持tar -z命令 如果是古老的Unix系统,可能并不认识tar ...
- Java程序员的日常—— 《编程思想》关于类的使用常识
Java虽然利用JVM,让程序员可以放心大胆的使用,可是仍然会出现内存泄露等问题.世上没有绝对的银弹,因此也不能完全把所有的任务都交给JVM,了解Java中的初始化与垃圾回收还是必不可少的知识. 关于 ...
- Java程序员的日常—— 垃圾回收中引用类型的作用
在Java里面,是不需要太过于关乎垃圾回收,但是这并不意味着开发者可以不了解垃圾回收的机制,况且在java中内存泄露也是家常便饭的事情.因此了解垃圾回收的相关知识就显得很重要了. 引用,在垃圾回收中是 ...
- Java程序员的日常 —— 多进程开发
最近再弄进程管理相关的工作,因此必要的就涉及到各种系统下关于进程的管理. 这里简单的介绍下: 如何在Java中执行命令 在windows下肯定是dos命令了,而在linux则为shell命令.执行的方 ...
- Java程序员的日常—— FileUtils工具类的使用
package cn.xingoo.learn.commons; import org.apache.commons.io.FileUtils; import org.apache.commons.i ...
- Java程序员的日常—— IOUtils总结
以前写文件的复制很麻烦,需要各种输入流,然后读取line,输出到输出流...其实apache.commons.io里面提供了输入流输出流的常用工具方法,非常方便.下面就结合源码,看看IOUTils都有 ...
- Java程序员的日常——存储过程知识普及
存储过程是保存可以接受或返回用户提供参数的SQL语句集合.在日常的使用中,经常会遇到复杂的业务逻辑和对数据库的操作,使用存储过程可以进行封装.可以在数据库中定义子程序,然后把子程序存储在数据库服务器, ...
- Java程序员的日常——SpringMVC+Mybatis开发流程、推荐系统
今天大部分时间都在写业务代码,然后算是从无到有的配置了下spring与mybatis的集成. SpringMVC+Mybatis Web开发流程 配置数据源 在applicationContext.x ...
- Java程序员的日常 —— 多进程开发IO阻塞问题
本篇仍旧是源于最近的工作,总结一下纪念那些年埋下的坑... 背景故事 需求:"使用进程方式启动另一个程序!" 开发:"OK! Runtime.getRuntime().e ...
随机推荐
- 如何在十分钟内插入1亿条记录到Oracle数据库?
这里提供一种方法,使用 APPEND 提示,使得十分钟内插入上亿数据成为可能. -- Create table create table TMP_TEST_CHAS_LEE ( f01 VARCHAR ...
- linux关闭防火墙
查看防火墙状态: sudo service iptables status linux关闭防火墙命令: sudo service iptables stop linux启动防火墙命令: sudo se ...
- swift 定制自己的Button样式
swift的UIButton类中有些公开方法可以重写,所以,如果想写出自己的UIButton,只要继承UIButton类,并重写相应的方法即可. 系统的UIButton可以添加图片,也可以添加标题,但 ...
- 彻底了解android中的内部存储与外部存储
我们先来考虑这样一个问题: 打开手机设置,选择应用管理,选择任意一个App,然后你会看到两个按钮,一个是清除缓存,另一个是清除数据,那么当我们点击清除缓存的时候清除的是哪里的数据?当我们点击清除数据的 ...
- JSON的故事
1.介绍JSON http://www.json.org/ https://developer.mozilla.org/zh-CN/docs/JSON 2.json的序列化和反序列化 序列化方法 va ...
- mysql 基础语法
以下为自己学习mysql 的一些笔记,以方便查询 目录 一. ALTER的 语法 二. 表的完整性约束 三. 索引的操作(mysql 数据库支持至少 16 个索引) 四. 视图的操作 五. 触发器的操 ...
- Two-Phase Commit (两阶段提交)
1. 流程 1) Coordinator (协调者) 广播 VOTE-REQ 给所有 Participant (参与者) 2) Coordinator 等待 Participant 的结果 3) Pa ...
- vsftpd移植
1.交叉编译 2.将生成的 vsftpd 复制到目标板 /usr/sbin 目录,vsftpd.conf 复制到目标板 /etc 目录,并添加 vsftpd 为可执行: 3.配置 使用 vi 打开 v ...
- android4.3 Bluetooth(le)分析之startLeScan分析
BluetoothAdapter.java中有low enery(le)的一些方法,android提供了这些方法,但源码中并未找到这些方法的调用之处.本文档主要分析这类方法的执行流程,来了解下le到底 ...
- 菜鸟学自动化测试(八)----selenium 2.0环境搭建(基于maven)
菜鸟学自动化测试(八)----selenium 2.0环境搭建(基于maven) 2012-02-04 13:11 by 虫师, 11419 阅读, 5 评论, 收藏, 编辑 之前我就讲过一种方试来搭 ...