- 浏览: 182590 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (99)
- 备忘录 (48)
- linux (19)
- oracle (10)
- shell (8)
- awk (1)
- java (48)
- just do it (29)
- more and more (46)
- common (29)
- 设计模式 (8)
- Java Web (9)
- Spring (0)
- Structs 2 (2)
- Java 高级 (4)
- 存储 (3)
- Virtual Box (1)
- ant (1)
- maven (0)
- 数据结构 (5)
- 算法 (5)
- javascript (1)
- ajax (1)
- jquery (1)
- xml (1)
- IBM (3)
- 转载 (3)
- English (2)
- html&css (0)
- hibernate (2)
- mysql (1)
- memcached (1)
最新评论
-
飞出四季做的茧:
kris_zhang 写道int temp = 0 ; ...
Java IO流 Zip文件的压缩和解压缩 -
kris_zhang:
int temp = 0 ; while(( ...
Java IO流 Zip文件的压缩和解压缩 -
welcomezhang:
学习了,这块自己还得深挖下
为什么HashMap不是线程安全的 -
fomeiherz:
这个写的最详细了,赞一个
Java的泛型类和泛型方法 -
beijishiqidu:
hanmiao 写道http://yangguangfu.it ...
Java设计模式之策略模式
之前针对项目的配置文件,遇到xml我们直接就用现在的开源框架dom4j或者jdom去解析,但是现在遇到一个后缀为properties的文件,里面保存的都是一些键值对,想想,我们还能去用那两种方式去解析吗?如果可以,那表示小弟还没有接触到哪个层面,目前只会用其最常用的,针对xml文件的解析,但是碰见类似于下面的键值对,我们该如何去做?难道要一行行的读出来,然后去判断等号的位置,然后进行截取?我不能说你这种方法不好,但是如果有简单的办法,为什么不用呢?还要自己去写读取的逻辑呢?而且如果考虑到代码的复用性,你还不得不考虑性能问题,一般来说,Java提供的api也是经过千锤百炼的,除非你是是牛逼的开发人员,不然还是建议老老实实用java提供的api吧。 。
下面我们就看一种最简单的文件读取吧。
下面的文件内容保存在我本地的F:\Work\properties中。
运行结果输出如下。(此方法一般用于调试)
下面这种方式的输出才是我们需要用到的,
结果如下:
虽然你发现输出反而少了一行,但是你可以看下我们的输出代码的写法,如果我们不用去输出,而是把他set进入一个对象的属性中去,那我们岂不是能够通过此方法,获得文件的记录,然后入库或者都可以了,是不是很简单,但是你会发现,我们这样做仅仅不够,很多人就会问了,这个类就只有这一个作用吗?别着急,下面我们就开始进入另一个相对比较常见的方式,xml文件解析。
xml文件这次我们保存在我们的项目路径下D:\Workspace\TESTFOROJ
文件的内容如下:
我们需要解析的代码就变成如下代码了:
以上是举例我们如何进行xml文件的读取, 其实我们还可以做到xml文件的保存。
我们还是以上个文件为例,代码如下
下面是我们的输出结果:
注意,此类还有很多我没有涉及到的,一些高级的属性,后续会慢慢研究,此文章只为备忘,如果有朋友看到了,有觉得不对的地方,请尽管提出来。注意,代码中有一些后续工作没有处理,比如流的关闭,我是没有做的,希望大家要注意哦。
以下是load方法的解释。
下面我们就看一种最简单的文件读取吧。
下面的文件内容保存在我本地的F:\Work\properties中。
jdbc.driverClassName=oracle.jdbc.driver.OracleDriver jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:oracle jdbc.username=test jdbc.password=test
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Properties; public class UtilProperties { public static void main(String[] args) { File file = new File("F:\\Work\\properties\\db.properties"); FileInputStream fi = null; try { fi = new FileInputStream(file); } catch (FileNotFoundException e) { e.printStackTrace(); } Properties p = new Properties(); try { p.load(fi); } catch (IOException e) { e.printStackTrace(); } p.list(System.out); } }
运行结果输出如下。(此方法一般用于调试)
-- listing properties -- jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:oracle jdbc.username=test jdbc.password=test jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
下面这种方式的输出才是我们需要用到的,
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Enumeration; import java.util.Properties; public class UtilProperties { public static void main(String[] args) { File file = new File("F:\\Work\\properties\\db.properties"); FileInputStream fi = null; try { fi = new FileInputStream(file); } catch (FileNotFoundException e) { e.printStackTrace(); } Properties p = new Properties(); try { p.load(fi); } catch (IOException e) { e.printStackTrace(); } Enumeration e = p.propertyNames(); while(e.hasMoreElements()) { Object obj = e.nextElement(); System.out.println(obj+"="+p.getProperty((String) obj)); } } }
结果如下:
jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:oracle jdbc.username=test jdbc.password=test jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
虽然你发现输出反而少了一行,但是你可以看下我们的输出代码的写法,如果我们不用去输出,而是把他set进入一个对象的属性中去,那我们岂不是能够通过此方法,获得文件的记录,然后入库或者都可以了,是不是很简单,但是你会发现,我们这样做仅仅不够,很多人就会问了,这个类就只有这一个作用吗?别着急,下面我们就开始进入另一个相对比较常见的方式,xml文件解析。
xml文件这次我们保存在我们的项目路径下D:\Workspace\TESTFOROJ
文件的内容如下:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <properties> <entry key="jdbc.url">jdbc:oracle:thin:@127.0.0.1:1521:oracle</entry> <entry key="jdbc.username">test</entry> <entry key="jdbc.password">test</entry> <entry key="jdbc.driverClassName">oracle.jdbc.driver.OracleDriver</entry> </properties>
我们需要解析的代码就变成如下代码了:
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Enumeration; import java.util.InvalidPropertiesFormatException; import java.util.Properties; public class UtilProperties { public static void main(String[] args) { File file = new File("D:\\Workspace\\TESTFOROJ\\db.xml"); FileInputStream fi = null; try { fi = new FileInputStream(file); } catch (FileNotFoundException e) { e.printStackTrace(); } Properties p = new Properties(); try { p.loadFromXML(fi); } catch (InvalidPropertiesFormatException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); } @SuppressWarnings("unchecked") Enumeration<Object> e = (Enumeration<Object>) p.propertyNames(); while (e.hasMoreElements()) { Object obj = e.nextElement(); System.out.println(obj + "=" + p.getProperty((String) obj)); } } }输出结果如下:
jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:oracle jdbc.username=test jdbc.password=test jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
以上是举例我们如何进行xml文件的读取, 其实我们还可以做到xml文件的保存。
我们还是以上个文件为例,代码如下
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.PrintStream; import java.util.Enumeration; import java.util.InvalidPropertiesFormatException; import java.util.Properties; public class UtilProperties { private static void getXML(Properties p,String fileName) { File file = new File(fileName); FileInputStream fi = null; try { fi = new FileInputStream(file); } catch (FileNotFoundException e) { e.printStackTrace(); } try { p.loadFromXML(fi); } catch (InvalidPropertiesFormatException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); } @SuppressWarnings("unchecked") Enumeration<Object> e = (Enumeration<Object>) p.propertyNames(); while (e.hasMoreElements()) { Object obj = e.nextElement(); System.out.println(obj + "=" + p.getProperty((String) obj)); } } public static void main(String[] args) { Properties p = new Properties(); //读取文件 getXML(p,"D:\\Workspace\\TESTFOROJ\\db.xml"); //改变我们读进来的属性,然后输出到另一个xml文件中去 p.setProperty("jdbc.username", "OOOOOOXXXXXXXX"); PrintStream ps = null; String fileName = "D:\\Workspace\\TESTFOROJ\\db_bak.xml"; try { ps = new PrintStream(new File(fileName)); } catch (FileNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } try { p.storeToXML(ps, "this is print xml,just for test"); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } //看下改变之后的文件内容 getXML(p,fileName); } }
下面是我们的输出结果:
jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:oracle jdbc.username=test jdbc.password=test jdbc.driverClassName=oracle.jdbc.driver.OracleDriver jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:oracle jdbc.username=OOOOOOXXXXXXXX jdbc.password=test jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
注意,此类还有很多我没有涉及到的,一些高级的属性,后续会慢慢研究,此文章只为备忘,如果有朋友看到了,有觉得不对的地方,请尽管提出来。注意,代码中有一些后续工作没有处理,比如流的关闭,我是没有做的,希望大家要注意哦。
以下是load方法的解释。
Open Declaration void java.util.Properties.load(InputStream inStream) throws IOException Reads a property list (key and element pairs) from the input byte stream. The input stream is in a simple line-oriented format as specified in load(Reader) and is assumed to use the ISO 8859-1 character encoding; that is each byte is one Latin1 character. Characters not in Latin1, and certain special characters, are represented in keys and elements using Unicode escapes. The specified stream remains open after this method returns
发表评论
-
cgroups控制cpu,memory,io使用率
2016-08-09 22:55 2661Cgroups是control groups的缩写,最初由Go ... -
为什么HashMap不是线程安全的
2016-06-15 22:27 2291序 最近因为项目的需求,经常会面试一些新人,也就会问他们 ... -
JAVA读取文件夹大小的几种方法实例
2016-04-24 15:39 776总是发现自己的C盘快满了,清理程序也不会帮我自己清理,然后 ... -
Java Regex - Matcher (java.util.regex.Matcher)
2015-03-01 13:59 884The Java Matcher class (java. ... -
Java Regex - Pattern (java.util.regex.Pattern)
2015-03-01 11:22 1577Java中的Pattern类是Java正则表达式API ... -
eclipse中查看jdk的源码
2014-11-23 11:43 1070最近一段时间跟jdk源码打交道的比较多,但是有的时候却是看 ... -
Oracle常见死锁发生的原因以及解决办法
2014-08-31 13:25 7563一,删除和更新之间引起的死锁 造成死锁的原因就是多个线程 ... -
Struts2学习初设系列(一)之环境搭建
2014-07-20 22:47 1106已经毕业很长时间了,回过头来想想都不知道自己做了什么,由于 ... -
算法的时间复杂度分析
2014-07-20 11:14 16812.9.1 算法时间复杂度定义 在进 ... -
解析 Java 类和对象的初始化过程
2014-07-06 18:14 683问题引入 近日我在调试一个枚举类型的解析器程序,该 ... -
Java 中正确使用 hashCode 和 equals 方法
2014-07-05 18:17 688在这篇文章中,我将告诉大家我对hashCode和equals ... -
通过分析 JDK 源代码研究 Hash 存储机制
2014-07-05 17:22 649集合和引用 就像引 ... -
NIO 入门
2014-07-05 17:15 675在开始之前 关于本教程 新的输入/输出 (NIO) 库 ... -
利用AJax方式提交和Webservice完成页面输入汉字简体字回显繁体字
2014-06-29 18:05 1186最近一直在学习新的 ... -
How To Parse XML File Using XPath In Java
2014-06-29 11:59 1341最近一直在学习XML的Xpath解析方式,据说是一个很简单 ... -
Java排序算法之快速排序
2014-06-22 11:27 856快速排序使用分治法(Divide and conquer)策略 ... -
Java排序算法之简单选择排序
2014-06-21 22:31 802在网上搜索了很多的算法,貌似大家说的简单选择排序算法和直接选择 ... -
Java排序算法之冒泡排序
2014-06-21 20:22 1036冒泡排序算法的基本思想是:首先将第n-1个记录的关键字和第n个 ... -
Java排序算法之直接插入排序
2014-06-21 19:33 1238直接插入排序算法的基本思想是:把n个待排序的元素看成为 ... -
JAVA之桥接模式
2014-05-26 20:11 0桥模式:将某个问题抽象的不同形式分别与该问题的具体实现 ...
相关推荐
在Java编程中,Properties文件是用于存储配置信息的文本文件,通常包含键值对,其中键和值可以是任意字符串。然而,当这些文件中包含中文字符时,如果不正确地处理编码,可能会出现中文乱码的问题。本文将深入探讨...
Java Properties文件是Java编程语言中用于存储配置信息的文本文件,通常以.properties为扩展名。这类文件的内容主要是键值对,广泛应用于各种配置场景,如应用程序的设置、国际化(i18n)文本等。然而,由于历史原因...
Java提供了一个内置的`java.util.Properties`类,用于处理`.properties`文件,这种格式通常用来存储键值对,即键(key)和对应的值(value)。以下是如何利用`Properties`类读取和操作`.properties`文件的详细步骤。...
总结来说,Java中修改Properties文件的键值涉及到使用`Properties`类的`load()`, `setProperty()`, 和 `store()`方法。在实际应用中,需要考虑异常处理和资源管理,以确保程序的稳定性和效率。通过封装这些操作到...
Java中Properties类的操作实例详解 Java中Properties类是Java.util包中的一个重要类,主要用于读取Java的配置文件。Properties类继承自Hashtable,提供了几个主要的方法,包括getProperty、load、setProperty、...
总结,Java中读取Properties文件是通过`java.util.Properties`类来实现的,涉及的关键步骤包括加载文件、获取键值对以及处理可能的异常。这种机制在许多场景下都非常实用,如数据库连接配置、应用设置等。理解并熟练...
此工具类只用于Java后端在操作Properties文件的时候写的工具类,方便properties文件的存取操作
java对properties的操作工具类 属性文件
在Java编程中,操作配置文件,尤其是`.properties`文件,是一项常见的任务。`.properties`文件主要用于存储应用程序的配置信息,通常包含键值对,其中键是唯一的标识符,值是与该键相关联的数据。Java提供了`java....
首先,我们需要了解Properties类在Java中的作用。`java.util.Properties`是Java提供的一个类,它继承了`Hashtable`,主要用于处理属性列表(键/值对)。以下是如何创建和加载Properties文件的基本步骤: 1. **创建...
在Java开发中,`Properties`类被广泛用于处理各种类型的配置文件。这些文件通常包含了应用程序运行时所需的配置信息,如数据库连接信息、系统参数等。`Properties`类继承自`Hashtable`类,并通过键值对的形式存储...
在Java编程中,Properties类是处理配置文件的关键工具,它用于加载、存储键值对,这些键值对常被用于程序的配置。然而,当我们读取一个Properties文件并再次保存时,原始的格式可能会发生变化,比如注释丢失、行顺序...
在Java编程中,读取`properties`文件是常见的任务,用于存储配置信息或者系统设置。以下将详细讲解六种不同的方法来实现这一功能。 1. **使用Properties类** Java的标准库提供了`java.util.Properties`类,它是...
`java.util.Properties`是Java标准库中的一个类,它提供了一种加载和保存属性列表的方法,这些属性可以是字符串到字符串的映射。但是,由于默认的编码问题,我们需要指定正确的编码来解析含有非ASCII字符的键或值。...
1.1.1 创建`Properties`对象:`Properties`类是Java提供的内置类,用于处理`properties`文件中的键值对。 ```java Properties properties = new Properties(); ``` 1.1.2 打开文件并创建`FileInputStream`:使用`...
Java中的`.properties`文件是用于存储配置信息和国际化(i18n)资源的关键组件。这些文件通常包含键值对,其中键代表消息或文本标识,值是与该键关联的本地化字符串。在处理中文内容时,由于字符编码的问题,可能会...
利用java的反射解析Properties文件转成对象 /** * 解析properties文件为对象 * @param * @param propPath * @param cls * @return * @throws InstantiationException * @throws ...
Java Properties 类是Java标准库中用于处理配置文件的关键组件,主要负责存储和加载键值对数据,常用于管理应用程序的配置信息。配置文件通常以`.properties`为扩展名,采用文本格式,每行包含一个键值对,键和值...
Java自带的Properties不好用,自己写了一个直接读写类,支持配置文件描述,支持对像值的描述,支持指定文件编码(默认UTF-8)
Java Properties是Java语言中用于处理配置文件的一个内置类,它主要负责存储键值对的数据,广泛应用于各种配置文件,如数据库连接配置、系统环境变量设置等。Properties类提供了读取和写入.properties文件的能力,...