文档章节

Java对properties配置文件操作工具类

狂爵
 狂爵
发布于 2017/05/17 10:58
字数 466
阅读 3
收藏 0
点赞 0
评论 0
package com.util;

import java.io.*;
import java.util.*;

/**
 * 对properties配置文件进行增删改查操作
 * <p>
 * Created by 张勇波 on 2016/8/18.
 */
public class PropertiesUtil {
    public static void main(String[] args) {
//        PropertiesUtil pu = new PropertiesUtil("", false);
//        File f = new File(pu.getClass().getResource("/").getPath());
//        System.out.println(f);
        PropertiesUtil pu = new PropertiesUtil("superUser2.properties", false);
//        pu.setProperties("systemdev", "zhangyongbo");
//        pu.delProperties("systemdev");
        Map<String, String> map = pu.readAllProperties();
        for (String s : map.keySet()) {
            System.out.println(s + " " + map.get(s));
        }
    }

    /**
     * 配置文件对象
     */
    private static Properties props = null;

    /**
     * 配置文件物理路径
     */
    private String filePath = "";

    /**
     * 构造函数
     * 如果配置文件不存在则创建一个空文件
     *
     * @param fileName 配置文件名称
     * @param bool     是否绝对路径.true是,fileName为配置文件物理路径。否则取classes路径,fileName为配置文件名称。
     */
    public PropertiesUtil(String fileName, boolean bool) {
        if (!bool) {
            filePath = new File(PropertiesUtil.class.getResource("/").getPath()) + "/" + fileName;
        } else {
            filePath = fileName;
        }
        props = new Properties();
        try {
            File myFile = new File(filePath);
            if (!myFile.exists())
                myFile.createNewFile();
            InputStream in = new BufferedInputStream(new FileInputStream(filePath));
            props.load(in);
            // 关闭资源
            in.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 根据key值读取配置的值
     *
     * @param key key值
     * @return key键对应的值
     */
    public String readValue(String key) {
        return props.getProperty(key);
    }

    /**
     * 更新(插入)一对配置
     *
     * @param key   key值
     * @param value value值
     */
    public void setProperties(String key, String value) {
        if (key != null && value != null && key.length() > 0) {
            try {
                OutputStream fos = new FileOutputStream(filePath);
                props.setProperty(key, value);
                props.store(fos, "Update:'" + key + "'value");
            } catch (IOException e) {
            }
        }
    }

    /**
     * 删除一对配置
     *
     * @param key key值
     */
    public void delProperties(String key) {
        if (key != null && key.length() > 0) {
            Map<String, String> map = readAllProperties();
            Properties p = new Properties();
            String val = "";
            for (String s : map.keySet()) {
                if (s.equals(key)) {
                    val = map.get(s);
                    continue;
                }
                p.setProperty(s, map.get(s));
            }
            try {
                FileWriter writer = new FileWriter(filePath);
                p.store(writer, "delete:'" + key + "'value'" + val + "'");
            } catch (IOException e) {
            }
            props = p;
        }
    }

    /**
     * 读取properties的全部信息
     *
     * @return Map<String, String>
     */
    public Map<String, String> readAllProperties() {
        // 保存所有的键值
        Map<String, String> map = new HashMap<String, String>();
        Enumeration<?> en = props.propertyNames();
        while (en.hasMoreElements()) {
            String key = (String) en.nextElement();
            String Property = props.getProperty(key);
            map.put(key, Property);
        }
        return map;
    }


    /**
     * 得到某一个类的路径
     *
     * @param aClass 类
     * @return 类物理地址
     */
    private String getPath(Class<PropertiesUtil> aClass) {
        String strResult = null;
        if (System.getProperty("os.name").toLowerCase().indexOf("window") > -1) {
            strResult = aClass.getResource("/").toString().replace("file:/", "").replace("%20", " ");
        } else {
            strResult = aClass.getResource("/").toString().replace("file:", "").replace("%20", " ");
        }
        return strResult;
    }
}

© 著作权归作者所有

共有 人打赏支持
狂爵
粉丝 2
博文 2
码字总数 870
作品 0
昌平
程序员
连接池详解,c3p0与dbcp的区别!

连接池: 连接池是创建和管理一个连接的缓冲池的技术,这些连接准备好被任何需要它们的线程使用。这项技术能明显提高对数据库操作的性能。 连接池的好处: (1)对于大多数应用程序,当它们正...

IT_laobai ⋅ 昨天 ⋅ 0

Common Gui Tools 1.4 发布,Java GUI 实用小工具集

Java GUI实用小工具集 Common Gui Tools 新增:二维码生成解析、时间戳转换、Json格式化、文本文件切分等。 Common Gui Tools 是用java编写,GUI界面的实用小工具集,1.4版有20个小工具: 1,...

bs2004 ⋅ 04/22 ⋅ 0

使用mybatis-generator生成dao层操作

使用mybatis-generator生成dao层操作 一 pom文件的配置添加 <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dep......

writeademo ⋅ 05/25 ⋅ 0

每个项目中,你必须知道的11个Java第三方类库。

Java第三方library ecosystem是一个很广阔的范畴。不久前有人撰文:每个项目中,你必须知道的11个Java第三方类库。 单元测试 1.DBUnit DBunit是一个基于junit扩展的数据库测试框架。它提供了...

thinkyoung ⋅ 2015/01/07 ⋅ 0

JavaWeb07-HTML篇笔记(二)

1.1 案例一:使用JDBC完成CRUD的操作:1.1.1 需求: 对分类管理使用JDBC进行CRUD的操作. 1.1.2 分析:1.1.2.1 技术分析: 【JDBC的概述】 Ø JDBC:Java DataBase Connectivity Java数据库的连...

我是小谷粒 ⋅ 05/16 ⋅ 0

🛠VS Code编辑器配置Java开发环境

🛠VS Code编辑器配置Java开发环境 一、简述 及讨论 由于学校课程的原因,是基本以java开发为主线的课程,但是我对java兴趣不大,又加上我不太喜欢 「Eclipse」这个java的集成开发环境(简称...

Cc卿 ⋅ 06/02 ⋅ 0

Java编程基础知识点和技术点归纳

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互...

Java小辰 ⋅ 05/23 ⋅ 0

Drools7.x环境搭建与简单示例

Drools是个规则引擎的开源实现。官方文档比较长。这里提供一个方法,搭建最基本的Drools运行环境,并提供一个简单示例。 环境准备: JDK 至少需要JDK 1.5以上,JDK去这里下载:http://www.or...

supergao222 ⋅ 01/10 ⋅ 0

HotSwap和JRebel原理

HotSwap和JRebel原理 HotSwap和Instrumentation 在2002年的时候,Sun在Java 1.4的JVM中引入了一种新的被称作的实验性技术,这一技术被合成到了内部,其允许调试者使用同一个类标识来更新类的...

千里明月 ⋅ 05/09 ⋅ 0

做几道基础的Java测试题,看看最近有进步吗?欢迎来学习

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互...

启示录是真的 ⋅ 05/24 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Android JNI 读写Bitmap的方法

Java层创建Bitmap,通过JNI将Bitmap传到C/C++进行处理 Java部分 public static native boolean greenBitmap(Bitmap bitmap); C/C++部分 JNIEXPORT jboolean JNICALL Java_com_test_Test_gree......

国仔饼 ⋅ 5分钟前 ⋅ 0

一次性让你懂async/await,解决回调地狱

什么是async? 欢迎留言讨论 async 函数是 Generator 函数的语法糖。使用 关键字 async 来表示,在函数内部使用 await 来表示异步。相较于 Generator,async 函数的改进在于下面四点: 内置执...

阿K1225 ⋅ 5分钟前 ⋅ 0

angular常用命令

.下载更新操作 1.利用npm下载angular的命令行工具AngularCLI: npm install -g @angular/cli 2.下载jquery: npm install --save jquery 3.更新npm: npm i -g npm 4.更新angular: ng update ......

消散了的诗意 ⋅ 8分钟前 ⋅ 0

window.print 页面打印

定义和用法 print() 方法用于打印当前窗口的内容。 语法 window.print(); window.print() 实际上,是浏览器打印功能菜单的一种程序调用。与点击打印功能菜单一样,不能精确分页,不能设置纸型...

初学者的优化 ⋅ 8分钟前 ⋅ 0

魔兽世界 7.0版本上 PVE装备全攻略

  T套 因为大家应该都会打穿副本的所以具体是哪个boss我就不说了。   T1: 所有套装都在【熔火之心】出   T2: 头原来是在【奥妮克希亚的巢穴】改到黑翼之巢的奈法利安了,腿是在【熔火之...

wangchen1999 ⋅ 9分钟前 ⋅ 0

java.math.BigDecimal使用小结

原文地址 java.math.BigDecimal使用小结 divide方法 使用BigDecimal.divide方法时一定要考虑: 除数是否为0 商是否是无限小数 正确的使用方式 判断除数是否为0,是0做另外的处理逻辑 调用除法...

666B ⋅ 12分钟前 ⋅ 0

关于qstring转char乱码问题。

if (OpenClipboard(NULL)) { HGLOBAL hgClip; EmptyClipboard(); QByteArray byay = FValue.toLocal8Bit(); //转latin编码 char *bochsrc_line = byay.data(); hgClip = GlobalAlloc(GMEM_DD......

backtrackx ⋅ 12分钟前 ⋅ 0

了解SSH加密和连接过程

介绍 SSH或安全shell是安全协议,也是安全管理远程服务器的最常用方式。通过使用多种加密技术,SSH提供了一种机制,用于在双方之间建立加密安全连接,对彼此进行身份验证,以及来回传递命令和...

吴伟祥 ⋅ 18分钟前 ⋅ 0

微信小程序

小程序的基础配置:导航栏和tabbar 在app.json文件中配置导航栏和tabrbar 导航栏的设置 设置导航,背景黑色,文字白色,文字内容 { "pages":[ "pages/index/index", "pages/logs/l...

上官清偌 ⋅ 22分钟前 ⋅ 0

【转】百度坐标坐标系之间的转换(JS版代码)

/** * Created by Wandergis on 2015/7/8. * 提供了百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换 *///定义一些常量var x_PI = 3.1415926535897932...

HAVENT ⋅ 23分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部