本示例以properties格式文件为主
如果你自己想要其他格式的文件如txt等等,可以自己修改代码
如果你想要自己的解析格式也可以修改conf代码中的parseLine方法里的解析格式
1.配置文件:bsidinfo.properties
###gsmconf 存储短信发送配置信息,message:发送命令内容,comid=COM2端口号大写,baud=115200为短信设备的波特率,根据需求修改#### [gsmconf] message=SMS:SET+WAKEUP comid=COM3 baud=9600 ###connectioninfo连接流媒体服务器的配置信息,IP、端口号port、用户名username 密码password,根据需求修改## [connectioninfo] port=7660 username=root password=6973hiktb ip=202.91.248.243 ###以下是所有终端的配置信息,[]里代表的是终端的名称不能重复,bsid终端id号,simid手机号,status默认为0## ##这里你可以添加、修改、删除、任何终端,但是请慎重处理 [红满线85号塔_1013] bsid=000001013 simid=15349919673 status=0 [3G-000001143] bsid=000001143 simid=13396716823 status=0
2.代码:
Conf.java
package cn.thunderbird.lm.media.util.conf; import java.io.File; import java.io.FileNotFoundException; import java.io.RandomAccessFile; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.apache.log4j.Logger; /** * 该类主要解析example.propertes文件 * 格式: * #####是注释 * [content] * key=value; * @author luqw */ public class Conf { private static final Logger log = Logger.getLogger(Conf.class); private static final ArrayList String = null; //all the node of properties will be restored.Every object type is ConfEntity class. private ArrayList nodeList = null; private String filePath = null; private Map current_map = null; private ConfEntity current_Entity = null; public Conf() { } /** * 首先导入文件 * @param filePath * @throws Exception */ public void importConf(String filePath) { RandomAccessFile randFile = null; try { this.filePath = filePath; randFile = new RandomAccessFile(filePath, "r"); } catch (FileNotFoundException e) { closeRandomFile(randFile); System.out.println(Constant.E_OprConfigFileError + filePath); } try { loadNodeList(randFile); } catch (Exception e) { e.printStackTrace(); } } /** * */ public void moveBak() { try { File destFile = new File(this.filePath); File bakFile = new File(this.filePath + ".bak"); if (destFile.exists()) { destFile.delete(); } bakFile.renameTo(destFile); } catch (Exception e) { System.out.println("move bak file[" + this.filePath + ".bak] to oraginal file" + this.filePath + "] error:" + e.getMessage()); } } /** * @throws Exception */ public void deleteBak() { try { File bakFile = new File(this.filePath + ".bak"); if (bakFile.exists()) { bakFile.delete(); } } catch (Exception e) { System.out.println("delete bak file[" + this.filePath + ".bak] error:" + e.getMessage()); } } /** * @param rf */ public void closeRandomFile(RandomAccessFile rf) { try { if (rf != null) { rf.close(); } } catch (Exception e) { System.out .println("close randomAccessFile error:" + e.getMessage()); } } /** * export and restore **/ public void exportConf() { RandomAccessFile rf = null; if (nodeList != null) { try { File oraFile = new File(this.filePath); File bakFile = new File(this.filePath + ".bak"); if (bakFile.exists()) { bakFile.delete(); } oraFile.renameTo(bakFile); rf = new RandomAccessFile(this.filePath, "rw"); rf.seek(rf.length()); Iterator it = nodeList.iterator(); boolean isFirstLine = true; while (it.hasNext()) { ConfEntity entity = (ConfEntity) it.next(); Map map = entity.getMap(); String nodeName = "[" + entity.getNodeName() + "]"; if (isFirstLine) { isFirstLine = false; } else { nodeName = "\n" + nodeName; } rf.writeBytes(nodeName); if ((map != null) && (map.size() > 0)) { Iterator tt = map.keySet().iterator(); while (tt.hasNext()) { String key = (String) tt.next(); String value = (String) map.get(key); String line = "\n" + key + "=" + value; rf.writeBytes(line); } } } deleteBak(); // } catch (Exception e) { moveBak(); // System.out.println(Constant.E_OprConfigFileError +this.filePath + e.getMessage()); } finally { closeRandomFile(rf); } } } /** * 载入文件里面的信息 * @param randFile * @throws Exception */ public void loadNodeList(RandomAccessFile randFile) throws Exception { if (randFile != null) { try { String str; nodeList = new ArrayList(); while ((str = randFile.readLine()) != null) { String strLine = str; parseLine(strLine); } if (current_Entity != null) { current_Entity.setMap(current_map); nodeList.add(current_Entity); } } catch (Exception e) { e.printStackTrace(); System.out.println(Constant.E_OprConfigFileError + this.filePath); } finally { closeRandomFile(randFile); } } } /** * 按照prperties文档格式解析文件 * #代表注释 不解析 * []解析 * @param lineStr */ public void parseLine(String lineStr) { if ((lineStr != null) && (lineStr.length() > 0) && !lineStr.startsWith("#")) { if (lineStr.startsWith("[")) { // a new node if (current_Entity != null) { current_Entity.setMap(current_map); nodeList.add(current_Entity); } current_Entity = new ConfEntity(); String nodeName = lineStr.substring(1, lineStr.length() - 1); current_Entity.setNodeName(nodeName); current_map = new HashMap(); } else { if (lineStr.contains("=")) { String key = ""; String value = ""; int indexOfEq = lineStr.indexOf("="); key = lineStr.substring(0, indexOfEq); if ((lineStr.length() - 1) > indexOfEq) { value = lineStr.substring(indexOfEq + 1, lineStr .length()); } current_map.put(key, value); } } } } /** * getValue by node name and property key * @param node * @param key * @return */ public String getValue(String node, String key) { String value = null; if ((nodeList != null) && (nodeList.size() > 0)) { Iterator it = nodeList.iterator(); while (it.hasNext()) { ConfEntity entity = (ConfEntity) it.next(); if (entity.getNodeName().equals(node)) { Map map = entity.getMap(); if (map != null) { value = (String) map.get(key); break; } } } } return value; } /** * * @param nodeName * @throws Exception */ public void addNode(String nodeName) { if (nodeName != null) { if ((nodeList != null) && (nodeList.size() > 0)) { boolean hasNode = false; // Iterator it = nodeList.iterator(); while (it.hasNext()) { ConfEntity entity = (ConfEntity) it.next(); if (entity.getNodeName().equals(nodeName)) { hasNode = true; break; } } if (!hasNode) { ConfEntity entity = new ConfEntity(); entity.setNodeName(nodeName); entity.setMap(null); nodeList.add(entity); } } } } /** * @param nodeName * @param key * @param value * @throws Exception */ public void addPropertie(String nodeName, String key, String value) { if (nodeName != null) { if ((nodeList != null) && (nodeList.size() > 0)) { boolean hasNode = false; Iterator it = nodeList.iterator(); ConfEntity entity = null; while (it.hasNext()) { ConfEntity tempEntity = (ConfEntity) it.next(); if (tempEntity.getNodeName().equals(nodeName)) { hasNode = true; entity = tempEntity; break; } } if (!hasNode) { entity = new ConfEntity(); entity.setNodeName(nodeName); Map map = new HashMap(); map.put(key, value); entity.setMap(map); nodeList.add(entity); } else { Map map = entity.getMap(); if (map == null) { map = new HashMap(); } map.put(key, value); entity.setMap(map); } } } } /** * * @param nodeName * @param map * @throws Exception */ public void addPropertie(String nodeName, Map map) { if ((nodeName != null)) { if ((nodeList != null) && (nodeList.size() > 0)) { boolean hasNode = false; Iterator it = nodeList.iterator(); ConfEntity entity = null; while (it.hasNext()) { ConfEntity tempEntity = (ConfEntity) it.next(); if (tempEntity.getNodeName().equals(nodeName)) { hasNode = true; entity = tempEntity; break; } } if (!hasNode) { System.out.println("!hasNode"); entity = new ConfEntity(); entity.setNodeName(nodeName); entity.setMap(map); nodeList.add(entity); } else { Map oraMap = entity.getMap(); if ((oraMap == null) || (oraMap.size() == 0)) { System.out.println("oraMap == null"); oraMap = map; } else { Iterator mapIt = map.keySet().iterator(); while (mapIt.hasNext()) { String key = (String) mapIt.next(); String value = (String) map.get(key); oraMap.put(key, value); } } } } } } /** * * @param nodeName * @throws Exception */ public void removeNode(String nodeName) { if (nodeName != null) { if ((nodeList != null) && (nodeList.size() > 0)) { boolean hasNode = false; Iterator it = nodeList.iterator(); while (it.hasNext()) { ConfEntity entity = (ConfEntity) it.next(); if (entity.getNodeName().equals(nodeName)) { nodeList.remove(entity); break; } } } } } /** * * @param nodeName * @param key */ public void removeKey(String nodeName, String key) { if ((nodeName != null) && (key != null)) { if ((nodeList != null) && (nodeList.size() > 0)) { Iterator it = nodeList.iterator(); while (it.hasNext()) { ConfEntity entity = (ConfEntity) it.next(); if (entity.getNodeName().equals(nodeName)) { Map map = entity.getMap(); map.remove(key); break; } } } } } /** * @param nodeName * @param key * @param value */ public void setProperties(String nodeName, String key, String value) { if ((nodeName != null) && (key != null) && (key.length() > 0) && (value != null)) { if ((nodeList != null) && (nodeList.size() > 0)) { Iterator it = nodeList.iterator(); while (it.hasNext()) { ConfEntity entity = (ConfEntity) it.next(); if (entity.getNodeName().equals(nodeName)) { ConfEntity confEntity = new ConfEntity(); Map map = entity.getMap(); map.remove(key); map.put(key, value); break; } } } } } /** * * @param nodeName * @param key * @param value */ public List<String> listKey(String nodeName) { ArrayList<String> nodeLists = new ArrayList<String>(); if ((nodeList != null) && (nodeList.size() > 0)) { Iterator it = nodeList.iterator(); while (it.hasNext()) { ConfEntity entity = (ConfEntity) it.next(); if (entity.getNodeName().equals(nodeName)) { Map map = entity.getMap(); if ((map != null) && (map.size() > 0)) { Iterator tt = map.keySet().iterator(); while (tt.hasNext()) { String key = (String) tt.next(); nodeLists.add(key); } } } } } return nodeLists; } public ArrayList getNodeList() { return nodeList; } /** * 测试代码 */ public void printNodeList() { if ((nodeList != null) && (nodeList.size() > 0)) { Iterator it = nodeList.iterator(); while (it.hasNext()) { ConfEntity entity = (ConfEntity) it.next(); System.out.println("---===========node===========---" + entity.getNodeName()); Map map = entity.getMap(); if ((map != null) && (map.size() > 0)) { Iterator tt = map.keySet().iterator(); while (tt.hasNext()) { String key = (String) tt.next(); String value = (String) map.get(key); System.out.println(key + "-------->" + value); } } } } } }
ConfEntity.java
package cn.thunderbird.lm.media.util.conf; import java.util.Map; public class ConfEntity { private String nodeName; private Map map; public String getNodeName() { return nodeName; } public void setNodeName(String nodeName) { this.nodeName = nodeName; } public Map getMap() { return map; } public void setMap(Map map) { this.map = map; }
Constant.java
package cn.thunderbird.lm.media.util.conf; public class Constant { public static final String E_OprConfigFileError = "读写配置文件失败"; }
Test.java
package cn.thunderbird.lm.media.dao; import java.util.Iterator; import java.util.Map; import cn.thunderbird.lm.media.util.CharacterUtil; import cn.thunderbird.lm.media.util.conf.Conf; public class Test { private static Conf conf =null;//全局的每次用完清空 private static String filepath=""; public void addNode(String nodeName, Map map){ nodeName=CharacterUtil.utfToIsso(nodeName); conf=new Conf(); conf.importConf(filepath); if ((map != null) && (map.size() > 0)) { Iterator tt = map.keySet().iterator(); while (tt.hasNext()) { String key = (String) tt.next(); String value = (String) map.get(key); conf.addPropertie(nodeName, key, value); } conf.exportConf(); conf=null; } } public void updateNode(String nodeName, Map map){ nodeName=CharacterUtil.utfToIsso(nodeName); conf=new Conf(); conf.importConf(filepath); if ((map != null) && (map.size() > 0)) { Iterator tt = map.keySet().iterator(); while (tt.hasNext()) { String key = (String) tt.next(); String value = (String) map.get(key); conf.setProperties(nodeName, key, value); } } conf.exportConf(); conf=null; } //修改某一个属性 public void updateProperty(String nodeName, String key,String value){ //nodeName=CharacterUtil.utfToIsso(nodeName); conf=new Conf(); conf.importConf(filepath); conf.setProperties(nodeName, key, value); conf.exportConf(); conf=null; } public static void main(String[] args) { Test test=new Test(); filepath="D:\\conf\\bsidinfo.properties"; test.updateProperty("test4","bsid","4"); //其他的方法类似 map就是[]下面的名值对key=value } }
发表评论
-
Java动态代理
2015-03-11 12:56 543本篇博客介绍是Java代理模式的基本提纲,帮助初步了解的人 ... -
如何选择SSH框架和Spring+SpringMVC+Mybatis
2015-02-02 15:41 0SSH的架构已经使用了四五年了,最近在思考为什么要使用框架 ... -
log4jweb中加载
2012-02-03 09:45 0Log4j在JAVA WEB应用中的推荐配置方法[转](200 ... -
log日志的存放位置
2012-02-03 09:42 0以DailyRollingFileAppender 为例:假设 ... -
JMS一些实例十一到实例十二
2011-12-29 17:13 712JMS一些实例十一到实例十二 深入掌握JMS(十一): ... -
JMS一些实例六到实例十
2011-12-29 17:08 765继续上篇文章jms实例六到十 深入掌握JMS(六):消 ... -
JMS一些实例一到实例五
2011-12-29 17:00 822本文并非原创 纯属转载 深入掌握JMS(一):JSM基 ... -
java email 实例
2011-12-23 16:18 651网上找的一些发邮件的代码供大家学习(eclipse java项 ... -
java modem 短信发送
2011-12-21 14:20 1292前一段时间公司用到短信modem发送信息,我通过参考网络资料, ... -
log4j 驱动加载错误
2011-12-16 15:59 1593错误: java.lang.ClassNotFoundExc ... -
log4j详解 转载
2011-12-16 15:52 794stone 的 log4j配置详解 Log4J的配置文件(C ...
相关推荐
本教程将重点讲解如何使用Visual Studio Code(简称Vs Code)这个强大的代码编辑器来实现Vue项目中的增删改查功能。首先,我们来看看Vue的基本概念。 Vue.js是尤雨溪开发的一个渐进式JavaScript框架,它具有轻量级...
在这个"vue文件源代码增删改查"的主题中,我们将深入探讨如何在Vue.js项目中实现CRUD(创建、读取、更新和删除)操作,结合SpringBoot后端服务和数据库交互。 首先,让我们从Vue.js的角度出发。在Vue应用中,CRUD...
在这个"SSH2项目增删改查事例"中,我们可以深入理解如何利用SSH2框架来实现数据库操作的基本功能。 1. **Struts2**:Struts2作为MVC框架,负责处理HTTP请求并分发到相应的Action类,它是业务逻辑的入口。在增删改查...
该压缩包文件“学生信息增删改查微信小程序案例(springboot后台).rar”提供了一个完整的教学示例,用于展示如何使用SpringBoot技术构建微信小程序的后台管理系统,以实现学生信息的管理功能,包括添加、删除、修改和...
在`configurationDemo`文件中,可能包含了一个简单的Java应用,该应用展示了如何使用Apache Commons Configuration库进行配置文件的【增删改查】操作以及动态加载。通过运行这个案例,我们可以更直观地理解这些功能...
这个压缩包文件的内容可能是为了帮助初学者理解如何在SSM框架下实现数据库的增删改查操作,其中Oracle作为后端数据库。 首先,我们来详细了解一下SSM框架的组成部分: 1. Spring:这是一个全面的轻量级应用框架,...
在本项目中,"学生管理系统+python+增删改查学习"是一个专为初学者设计的实践项目,旨在帮助学习者掌握Python编程语言,并通过实际操作理解数据库的增删改查(CRUD)操作。这个管理系统是用Python编写的,可以进行...
在本教程中,我们将深入探讨MyBatis的基本配置和如何进行简单的增删改查操作。 **1. MyBatis的基本配置** MyBatis的配置文件通常命名为`mybatis-config.xml`,它是整个MyBatis框架的全局配置。以下是一些基本配置...
在实际开发中,为了提高代码的复用性和减少重复工作,开发者通常会实现一套通用的增删改查模板,这就是“Mybatis通用增删改查”的概念。 1. **基础 DaoImpl 概念** Dao(Data Access Object)接口是Java中用于...
在"struts简易增删改查"这个主题中,我们将探讨如何使用Struts框架来实现一个基本的数据操作功能,包括添加(Add)、删除(Delete)、修改(Update)和查询(Search)数据。这些功能是任何数据库驱动的应用程序的...
在本项目中,我们主要探讨的是如何利用SpringMVC和MyBatis这两个流行的技术框架来实现Web应用中的基本功能:增删改查以及文件的上传和下载。这些功能是大多数企业级应用的基础,也是开发者必须掌握的核心技能。下面...
"增删改查"是任何数据管理系统的基石。在React中,我们可以使用事件处理函数来触发这些操作。例如,当用户点击“添加”按钮时,一个handleAdd函数会被调用,负责收集表单数据并将其添加到数据列表中。同样,对于删除...
5. **增删改查操作**:在SSM项目中,常见的增删改查操作对应于数据库的INSERT、DELETE、UPDATE和SELECT语句。例如,UserService中的`addUser()`, `deleteUser()`, `updateUser()`和`getUserById()`方法分别对应这些...
这个"GridView增删改查学习示例源码"是一个典型的Web应用开发案例,主要展示了如何利用GridView实现数据的添加(Add)、删除(Delete)、修改(Update)和查询(Search)功能。 首先,`Default.aspx`通常是网站的...
总结,本实例展示了如何在SpringBoot项目中配置并使用MySQL数据库,以及如何通过`JpaRepository`接口实现增删改查功能。无论是使用原生SQL还是`save()`方法,都能灵活地满足各种数据库操作需求。同时,自动创建数据...
本主题聚焦于“小程序增删改查代码”,这意味着我们将探讨如何在小程序中实现数据库的CRUD(Create、Read、Update、Delete)操作。CRUD是数据库管理的基本功能,对于任何应用程序的数据管理都至关重要。 首先,我们...
本示例主要介绍如何结合这两者来实现数据库的增删改查操作。对于初学者而言,这是一个很好的起点,可以帮助理解服务端与客户端之间的通信以及UI交互。 **WCF简介** WCF是微软提供的一种统一的编程模型,用于创建...
例如,我们可以创建一个`StudentController`类,包含`addStudent()`, `getStudents()`, `updateStudent()`, `deleteStudent()`等方法,分别对应增、删、改、查的操作。这些方法调用服务层(Service Layer)进行实际...
在IT行业中,XML因其结构清晰、可扩展性强的特点,被广泛应用于数据交换、配置文件、Web服务等领域。本文将深入探讨XML的全方面操作,包括创建、解析、修改和查询。 首先,让我们来看看如何创建XML文档。一个基本的...
读取配置文件是应用程序中常见的一种做法,用于存储如数据库连接信息、应用程序设置等静态数据。在Java中,可以使用Properties类或者第三方库如Apache Commons Configuration来读取和管理配置文件。这样做的好处是...