最近空闲时间整理一下平时常用的一下工具类,重复造轮子实在是浪费时间,如果不正确或者有待改善的地方,欢迎指教...

package com.hsuchan.business.utils;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Properties;
import org.apache.log4j.Logger; /**
* Java属性文件操作工具类
* <p>由于每个人的需求不一样,所以本工具只提供常用的功能(包括根据键名获取键值,根据键名修改键值),
* 如果不满足,自个完全可以修改,在本工具类中,我们假设属性文件已经存在,并且文件中已经存在我们要操作的key</p>
* @authorHsuChan
* @version v1.0.0 2015-06-19
*/
public class PropertiesUtil {
private static Properties properties= new Properties();
private static Logger logger = Logger.getLogger(PropertiesUtil.class);
/**测试用 属性文件名*/
private static final String PROPERTIES_FILE_PATH="/config.properties";
/**测试用 操作的键名*/
private static final String KEY_NAME="content"; /**
* 初始化properties
* @param path 属性文件路径,如:/config.properties
*/
private static void initProperties(String path) { try {
InputStream ipsm = PropertiesUtil.class.getResourceAsStream(path);
properties.load(ipsm);
ipsm.close();
} catch (IOException e) {
logger.error(e.getMessage());
}
} /**
* 根据键名key获取属性文件中对应的键值
* @param path 属性文件路径,如:/config.properties
* @param key 属性文件 键名
* @return
*/
public static String getValueByKey(String path,String key){
//如果properties为空,则初始化
if(properties.isEmpty())
initProperties(path);
return properties.getProperty(key);
} /**
* 通过键名key修改其对应的值为value
* @param path 属性文件路径,如:/config.properties
* @param key 属性文件 键名
* @param value 属性文件 键值
*/
public static void modifyValueByKey(String path,String key,String value) {
//如果properties为空,则初始化
if(properties.isEmpty())
initProperties(path);
//修改值
properties.setProperty(key, value); try {
//获取文件路径
URL url = PropertiesUtil.class.getResource(path);
FileOutputStream fos = new FileOutputStream(new File(url.toURI()));
//保存到文件
properties.store(fos, "modify the value of key");
fos.close();
} catch (Exception e) {
logger.error(e.getMessage());
}
} /**
* 测试
* @param args
*/
public static void main(String[] args) {
//取值示例
System.out.println("修改前:"+getValueByKey(PROPERTIES_FILE_PATH,KEY_NAME));
//修改示例
modifyValueByKey(PROPERTIES_FILE_PATH,KEY_NAME,"3333311s");
//取值示例
System.out.println("修改后:"+getValueByKey(PROPERTIES_FILE_PATH,KEY_NAME)); }
}

转载请注明出处,谢谢。

Java操作属性文件之工具类的更多相关文章

  1. Java操作属性文件,支持新增或更新多个属性

    Java操作属性文件.支持新增或更新多个属性 一.更新或新增单个属性的方法 /** * 写入properties信息 * @param filePath 绝对路径(包含文件名称和后缀名) * @par ...

  2. Java 操作Redis封装RedisTemplate工具类

    package com.example.redisdistlock.util; import org.springframework.beans.factory.annotation.Autowire ...

  3. Java操作属性文件与国际化

    在前面讲到的java类集中的Hashtable中,有一个子类Properties,此类定义如下: public class Properties extends Hashtable<Object ...

  4. java简单的文件读写工具类

    import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedRead ...

  5. java IO Nio 文件拷贝工具类Files

    public static void main(String[] args) throws Exception { Files.copy(Paths.get("file/text.txt&q ...

  6. 文件类型工具类:FileTypeUtil

    个人学习,仅供参考! package com.example.administrator.filemanager.utils;import java.io.File;/** * 文件类型工具类 * * ...

  7. java文件处理工具类

    import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedRead ...

  8. Java 文件切割工具类

    Story: 发送MongoDB 管理软件到公司邮箱,工作使用. 1.由于公司邮箱限制附件大小,大文件无法发送,故做此程序用于切割大文件成多个小文件,然后逐个发送. 2.收到小文件之后,再重新组合成原 ...

  9. Java 压缩文件夹工具类(包含解压)

    依赖jar <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons ...

随机推荐

  1. js拖拽效果实现

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. 【Android接百度地图API】百度地图Demo点击按钮闪退

    运行百度地图自带的BaiduMap_AndroidSDK_v4.1.0_Sample里面的BaiduMapsApiASDemo发现点击上面的按钮会闪退,控制台报的是xml的问题 查了一下,官方文档特别 ...

  3. The Safe Navigation Operator (&.) in Ruby

    The most interesting addition to Ruby 2.3.0 is the Safe Navigation Operator(&.). A similar opera ...

  4. web加密的基本概念

    1.需求 了解web加密的一些基础概念. 2.基本概念 a.对称加密方式 对称加密方式 加密和解密用同一个密钥 不足之处是,交易双方都使用同样钥匙,安全性得不到保证.此外,每对用户每次使用对称加密算法 ...

  5. 【spoj705】 Distinct Substrings

    [题目描述] 给定一个字符串,计算其不同的子串个数. [输入格式] 一行一个仅包含大写字母的字符串,长度<=50000 [输出格式] 一行一个正整数,即不同的子串个数. [样例输入] ABABA ...

  6. NodeJS Addon 多线程

    Mac版本客户端准备使用electron实现,需要对现有的C API的IM SDK 做NodeJS封装,提供Javascript接口. 使用Nan,遇到的问题主要是NodeJS是libuv defal ...

  7. erlang 在线生成crashdump

    一般说来抓dump 4种 方式:      1. erlang:halt(“abort”).      2. 在erlang shell下输入CTRL C + “大写的A”      3.等着进程崩溃 ...

  8. AtomicBoolean介绍与使用

       java.util.concurrent.atomic.AtomicBoolean 继承自Object. 介绍: 在这个Boolean值的变化的时候不允许在之间插入,保持操作的原子性 方法和举例 ...

  9. Anti XSS 防跨站脚本攻击库

    https://wpl.codeplex.com/ Before understanding Anti-Cross Site Scripting Library (AntiXSS), let us u ...

  10. tornado 异步调用系统命令和非阻塞线程池

    项目中异步调用 ping 和 nmap 实现对目标 ip 和所在网关的探测 Subprocess.STREAM 不用担心进程返回数据过大造成的死锁, Subprocess.PIPE 会有这个问题. i ...