Java操作属性文件。支持新增或更新多个属性

一、更新或新增单个属性的方法

/**
* 写入properties信息
* @param filePath 绝对路径(包含文件名称和后缀名)
* @param parameterName 名称
* @param parameterValue 值
*/
public static void writeProperties(String filePath, String parameterName, String parameterValue) { Properties props = new Properties();
try { //假设文件不存在。创建一个新的
File file=new File(filePath);
if(!file.exists()){
file.createNewFile();
} InputStream fis = new FileInputStream(filePath);
// 从输入流中读取属性列表(键和元素对)
props.load(fis);
fis.close();
OutputStream fos = new FileOutputStream(filePath);
props.setProperty(parameterName, parameterValue);
// 以适合使用 load 方法载入到 Properties 表中的格式,
// 将此 Properties 表中的属性列表(键和元素对)写入输出流
props.store(fos, parameterName);
fos.close(); // 关闭流
} catch (IOException e) {
System.err.println("Visit "+filePath+" for updating "+parameterName+" value error");
}
}

二、更新或新增N个属性的方法

/**
* @Title: writeMultiProperty
* @Description: TODO(改动属性文件的多个属性)
* @param filePath 属性文件路径(绝对路径)
* @param list 要更新或新增的一列值
* @return void
*/
public static void writeMultiProperty(String filePath, List<Pobj> list){
if(list == null || list.size() == 0) return; Properties props = new Properties();
try {
//假设文件不存在,创建一个新的
File file=new File(filePath);
if(!file.exists()){
file.createNewFile();
}
InputStream fis = new FileInputStream(filePath);
// 从输入流中读取属性列表(键和元素对)
props.load(fis);
fis.close();
OutputStream fos = new FileOutputStream(filePath); // 设置属性
for(Pobj obj : list){
props.setProperty(obj.getKey(), obj.getValue());
} // 保存至属性文件
props.store(fos, "update properties"); fos.close(); // 关闭流
} catch (IOException e) {
System.err.println("Visit "+filePath+" for updating THE PROPERTIES value error");
}
}

多个属性的更新或新增须要用到一个辅助类。暂时存储须要进行操作的值

/**
* @ClassName: Pobj
* @Description: TODO(辅助类,用来传递属性文件的每一条属性)
* @author Bruce oiiopro@live.cn
* @date 2014-11-18 下午11:31:00
*/
public static class Pobj{ private String key;
private String value; public Pobj(){} /**
* <p>Title: </p>
* <p>Description: </p>
* @param key
* @param value
*/
public Pobj(String key, String value){
this.key = key;
this.value = value;
} public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
} }

三、读取属性文件的方法

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties; import org.apache.commons.io.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; public class SettingsJNWJ { private static final Logger LOGGER = LoggerFactory.getLogger(SettingsJNWJ.class); private static SettingsJNWJ instance; public Properties settings = new Properties(); public SettingsJNWJ() {
String filename = ("d:/jnwj.properties");
LOGGER.info("Loading " + filename + "...");
InputStream stream = null;
try {
stream = new FileInputStream(filename);
settings.load(stream);
LOGGER.info( filename + " loaded");
} catch (IOException e) {
LOGGER.error("Failed to " + filename , e);
} finally {
if(stream != null) IOUtils.closeQuietly(stream);
}
} public synchronized static SettingsJNWJ getInstance() {
if (instance == null) {
instance = new SettingsJNWJ();
} return instance;
} public String getString(String key) {
return settings.getProperty(key);
} public static void main(String[] args) {
SettingsJNWJ s = SettingsJNWJ.getInstance();
System.out.println(s.settings.toString());
// System.out.println(SettingsJNWJ.getInstance().getString("uname"));
}
}

附,属性文件内容 [ jnwj.properties ]


uname=wckj
upass=wckj123456
unitcode=2340958039458

四、測试

/**
* @Title: main
* @Description: TODO(这里用一句话描写叙述这种方法的作用)
* @param @param args 设定文件
* @return void 返回类型
* @throws
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// test1();
test2();
} /**
* @Title: 多个属性新增或更改的測试
*/
public static void test2(){
List<Pobj> list = new ArrayList<Pobj>();
list.add(new Pobj("uname", "wckj"));
list.add(new Pobj("upass", "wckj123456"));
list.add(new Pobj("unitcode", "2340958039458"));
writeMultiProperty("D:/aiterw/conf/jnwj.properties", list);
System.out.println(SettingsJNWJ.getInstance().settings.toString());
} /**
* @Title: 单个属性新增或更改的測试
*/
public static void test1(){
//写文件
String passwork = "wckj123456";
String jnwj = Settings.getInstance().getString("jnwj"); //这里能够直接写成自己的属性文件位置。 如:d:/jnwj.properties
writeProperties(jnwj, "upass", passwork); //从文件里取出userPassword,
System.out.println(SettingsJNWJ.getInstance().getString("upass"));
}





Java操作属性文件,支持新增或更新多个属性的更多相关文章

  1. Java代码操作properties文件(读取,新增/修改,删除)

    项目中需要用到操作properties文件中的数据,记录一下 package com.bonc.savepic.save; import java.io.FileNotFoundException; ...

  2. java 操作excel 文件

    JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Windows操作系统也可以通过 ...

  3. [转载]Java操作Excel文件的两种方案

    微软在桌面系统上的成功,令我们不得不大量使用它的办公产品,如:Word,Excel.时至今日,它的源代码仍然不公开已封锁了我们的进一步应用和开发.在我们实际开发企业办公系统的过程中,常常有客户这样子要 ...

  4. Java学习笔记(二)——Java操作properties文件

    [前面的话] 前段时间在学习和玩java web相关的东西,对于这些技术,一边学习,一边做东西,一边总结,希望可以一边成长和有所收获.有时总是思考太多反而成为了前进的阻力,所以对于生活还是简单一些,不 ...

  5. JAVA操作properties文件

    va中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,文件的内容是格式是"键=值"的格式,在properties ...

  6. Java操作XML文件 dom4j 篇

    在项目中,我们很多都用到了xml文件,无论是参数配置还是与其它系统的数据交互.今天就来讲一下Java 中使用dom4j来操作XML文件. 我们需要引入的包: //文件包 import java.io. ...

  7. JAVA 操作 DBF 文件数据库

    1.依赖夹包 javadbf-[].4.1.jar jconn3.jar 2.添加属性文件 jdbc.properties jdbc.driverClassName=com.sybase.jdbc3. ...

  8. 用java操作XML文件(DOM解析方式)

    XML 可扩展标记语言(Extensible Markup Language),是独立于软件和硬件的传输工具. XML的作用: (1)用作配置文件 (2)简化数据共享 (3)简化数据传输 XML DO ...

  9. Java操作xml文件

    Bbsxml.java public class Bbsxml { private String imgsrc; private String title; private String url; p ...

随机推荐

  1. udp 不需要 listen

    accept()不是监听,accept()是接受新连接.listen()是进入监听状态,表示愿意接收连接请求.listen之后有连接请求就将其放到队列中,accept()时把新连接请求从队列中取出,建 ...

  2. 在桌面Linux环境下开发图形界面程序的方案对比

    在Linux下开发GUI程序的方法有很多,比如Gnome桌面使用GTK+作为默认的图形界面库,KDE桌面使用Qt作为默认的图形界面库,wxWidgets则是另一个使用广泛的图形库,此外使用Java中的 ...

  3. chmod

    0表示没有权限,1表示可执行权限,2表示可写权限,4表示可读权限数字与字符对应关系如下:r=4,w=2,x=1若要rwx属性则4+2+1=7若要rw-属性则4+2=6:若要r-x属性则4+1=5命令: ...

  4. Electron开发环境部署

    Electron开发环境部署 安装node.js 可以从node.js官方网站上获取安装包,并进行安装,安装完可以通过 ndoe -v 指令进行版本查看. 本文的开发环境为node.js 4.4.5. ...

  5. shell获取日期(昨天,明天,上月,下月)

    今天 sh-4.1$ echo `date +%Y-%m-%d` 2016-08-17 昨天 sh-4.1$ echo `date -d "last day" +%Y-%m-%d` ...

  6. 常用mysql笔记

    1.insert into ... values insert into tables (col1,col2) values (1,2),(2,3); 2.insert into ... select ...

  7. Python一路走来 线程 进程

    Python线程 Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #!/usr/bin/env pytho ...

  8. Android学习笔记--Menu菜单的使用

    实现选项菜单.上下文菜单,以及菜单内部的子菜单. 视图效果: MainActivity 选项菜单 选项菜单的子菜单 上下文菜单(按住按钮或者EditText弹出) 注意:上下文菜单如何弹出?在注册该菜 ...

  9. Google Analytics:为链接点击设定事件追踪的方法

    在 Google Analytics 中,可以使用 Event Tracking 功能跟踪自定义的事件.但是,如果你要跟踪的是一个链接点击,那么单纯这样写则很有可能导致漏掉许多事件: <a hr ...

  10. shell下 使用心得

    打印时间的命令 date +'%F %k:%M:%d' crontab启动计划任务,注意两件事情: 1)crontab里启动的脚本,如果需要读取文件,需要使用绝对路径,或者在脚本里cd到目录所在的绝对 ...