网站免费源码大全无需下载,免费算命免费 生辰八字,叮当设计网,南宁市建设厅官方网站属性文件properties
后缀为.properties的文件#xff0c;称之为属性文件#xff0c;它可以很方便的存储一些类似于键值对的数据。经常当做软件的配置文件使用。 首先我们要掌握属性文件的格式#xff1a;
1.属性文件后缀以.properties结尾
2.属性文件里面的每一行都是一个…属性文件properties
后缀为.properties的文件称之为属性文件它可以很方便的存储一些类似于键值对的数据。经常当做软件的配置文件使用。 首先我们要掌握属性文件的格式
1.属性文件后缀以.properties结尾
2.属性文件里面的每一行都是一个键值对键和值中间用隔开。比如: admin123456
3.#表示这样是注释信息是用来解释这一行配置是什么意思。
4.每一行末尾不要习惯性加分号以及空格等字符不然会把分号空格会当做值的一部分。
5.键不能重复值可以重复那么如何读取.properties文件呢需要使用到Properties类Properties是Map接口下面的一个实现类所以Properties也是一种双列集合用来存储键值对。 但是一般不会把它当做集合来使用。Properties类的对象用来表示属性文件可以用来读取属性文件中的键值对。需要用到的方法如下。 Properties读取属性文件的步骤如下:
1、创建一个Properties的对象出来键值对集合空容器
2、调用load(字符输入流/字节输入流)方法(哪个都行,读文本还是建议用前者)开始加载属性文件中的键值对数据到properties对象中去
3、调用getProperty(键)方法根据键取值注意这里管道资源不需要我们手动关闭api内部自动关public class PropertiesTest1 {public static void main(String[] args) throws Exception {// 1、创建一个Properties的对象出来键值对集合空容器Properties properties new Properties();System.out.println(properties);//输出{}// 2、开始加载属性文件中的键值对数据到properties对象中去properties.load(new FileReader(properties-xml-log-app\\src\\users.properties));System.out.println(properties);//输出{admin123456,...}// 3、根据键取值System.out.println(properties.getProperty(赵敏));System.out.println(properties.getProperty(张无忌));// 4、遍历全部的键和值。//获取键的集合SetString keys properties.stringPropertyNames();for (String key : keys) {//再根据键获取值String value properties.getProperty(key);System.out.println(key ---- value);}properties.forEach((k, v) - {System.out.println(k ---- v);});}
}使用Properties往属性文件中写键值对需要用到的方法如下 往Properties属性文件中写键值对的步骤如下
1、创建Properties对象出来
2、调用setProperty存储一些键值对数据
3、调用store(字符输出流/字节输出流, 注释)将Properties集合中的键和值写到文件中注意第二个参数是注释必须得加
注意这里管道资源不需要我们手动关闭api内部自动关先准备一个users2.properties属性文件看看会不会被修改如下图所示 运行下面代码
public class PropertiesTest2 {public static void main(String[] args) throws Exception {// 1、创建Properties对象出来先用它存储一些键值对数据Properties properties new Properties();properties.setProperty(张无忌, minmin);properties.setProperty(殷素素, cuishan);properties.setProperty(张翠山, susu);// 2、把properties对象中的键值对数据存入到属性文件中去properties.store(new FileWriter(properties-xml-log-app/src/users2.properties), i saved many users!);}
}运行后user2.properties 配置文件打开效果如下图所示。 PS:测试发现把路径后缀改成txt文件一样能运行包括读文件键值对和写文件键值对。 XML文件
xml文件是一种在开发中经常使用的文件是可扩展的标记语言意思是它是由一些标签组成的而这些标签是自己定义的。本质上是一种数据格式可以用来表示复杂的数据关系。 XML文件有如下的特点
XML中的标签名 称为一个标签或者一个元素一般是成对出现的。
XML中的标签名可以自己定义可扩展但是必须要正确的嵌套
XML中只能有一个根标签。
XML标准中可以有属性
XML必须第一行有一个文档声明格式是固定的?xml version1.0 encodingUTF-8?
XML文件必须是以.xml为后缀结尾如下图所示是最为常见的标签有属性、文本、还有合理的嵌套。
XML文件中除了写以上的数据格式之外还有一些特殊的字符不能直接写。像 ,,等这些符号不能出现在标签的文本中因为标签格式本身就有会和标签格式冲突。
data 3 2 5 4 /data
!-- 错误写法 --如果标签文本中有这些特殊字符需要用一些占位符代替。
lt; 表示
gt; 表示
amp; 表示
apos; 表示
quot; 表示 如果在标签文本中出现大量的特殊字符不想使用特殊字符此时可以用CDATA区格式如下
data1![CDATA[3 2 5 4]]
/data1XML解析1 获取根元素 使用程序读取XML文件中的数据称之为XML解析。这里并不需要我们自己写IO流代码去读取xml文件中的数据。其实有很多开源的好用的XML解析框架最知名的是DOM4J第三方开发的在官网下载jar包。DOM4J解析XML文件的思想是文档对象模型意思是把整个XML文档、每一个标签、每一个属性等都当做对象来看待。Document对象表示整个XML文档、Element对象表示标签元素、Attribute对象表示属性、标签中的内容就是文本。 DOM4J解析XML需要用到的方法如下图所示 XML解析的过程是从根元素开始从外层往里层解析。 我们先把Document对象和根元素获取出来
public class Dom4JTest1 {public static void main(String[] args) throws Exception {// 1、创建一个Dom4J框架提供的解析器对象SAXReader saxReader new SAXReader();// 2、使用saxReader对象把需要解析的XML文件读成一个Document对象。Document document saxReader.read(properties-xml-log-app\\src\\helloworld.xml);// 3、从文档对象中解析XML文件的全部数据了Element root document.getRootElement();System.out.println(root.getName());//输出users}
}XML解析2 获取子元素 获取到XML文件的根元素之后接下来就可以用根元素在获取到它里面的子元素包括子标签、表属性等。需要用到的方法如下图所示 把上面的方法对下面的XML一个一个的演示一下。
?xml version1.0 encodingUTF-8 ?
!-- 注释以上抬头声明必须放在第一行必须有 --
!-- 根标签只能有一个 --
usersuser id1 desc第一个用户name张无忌/namesex男/sex地址光明顶/地址passwordminmin/passworddata 3 lt; 2 amp;amp; 5 4 /datadata1![CDATA[3 2 5 4]]/data1/userpeople很多人/peopleuser id2name敏敏/namesex女/sex地址光明顶/地址passwordwuji/passworddata 3 lt; 2 amp;amp; 5 4 /datadata1![CDATA[3 2 5 4]]/data1/user
/userspublic class Dom4JTest1 {public static void main(String[] args) throws Exception {// 1、创建一个Dom4J框架提供的解析器对象SAXReader saxReader new SAXReader();// 2、使用saxReader对象把需要解析的XML文件读成一个Document对象。Document document saxReader.read(properties-xml-log-app\\src\\helloworld.xml);// 3、从文档对象中解析XML文件的全部数据了Element root document.getRootElement();System.out.println(root.getName());//users// 4、获取根元素下的全部一级子元素。// ListElement elements root.elements();// 4、获取根元素下的全部名为user的元素。ListElement elements root.elements(user);for (Element element : elements) {System.out.println(element.getName());//user}// 5、获取当前元素下的某个子元素。Element people root.element(people);System.out.println(people.getText());//很多人// 如果下面有很多子元素user默认获取第一个。Element user root.element(user);System.out.println(user.elementText(name));//张无忌// 6、获取元素的属性信息呢System.out.println(user.attributeValue(id));//1Attribute id user.attribute(id);System.out.println(id.getName());//idSystem.out.println(id.getValue());//1ListAttribute attributes user.attributes();//获取user的全部属性for (Attribute attribute : attributes) {System.out.println(attribute.getName() attribute.getValue());//id1 desc第一个用户}// 7、如何获取全部的文本内容:获取当前元素下的子元素文本值System.out.println(user.elementText(name));//张无忌System.out.println(user.elementText(地址));//光明顶System.out.println(user.elementTextTrim(地址)); // 取出文本去除前后空格System.out.println(user.elementText(password));//minminElement data user.element(data);System.out.println(data.getText());// 3 2 5 4System.out.println(data.getTextTrim()); // 取出文本去除前后空格}
}XML文件写入 DOM4J也提供了往XML文件中写标签的方法但是用起来比较麻烦。这里不建议使用 我们自己使用StringBuilder按照标签的格式拼接然后再使用BufferedWriter写到XML文件中去就可以了。
public class Dom4JTest2 {public static void main(String[] args) {// 1、使用一个StringBuilder对象来拼接XML格式的数据。StringBuilder sb new StringBuilder();sb.append(?xml version\1.0\ encoding\UTF-8\ ?\r\n);sb.append(book\r\n);sb.append(\tname).append(从入门到跑路).append(/name\r\n);sb.append(\tauthor).append(dlei).append(/author\r\n);sb.append(\tprice).append(999.99).append(/price\r\n);sb.append(/book);try (BufferedWriter bw new BufferedWriter(new FileWriter(properties-xml-log-app/src/book.xml));){bw.write(sb.toString());} catch (Exception e) {e.printStackTrace();}}
}?xml version1.0 encodingUTF-8 ?
bookname从入门到跑路/nameauthordlei/authorprice999.99/price
/bookXML约束了解 XML约束指的是限制XML文件中的标签或者属性只能按照规定的格式写。 比如我在项目中想约束一个XML文件中的标签只能写书、书名、作者、售价这几个标签如果写其他标签就报错。 怎么才能达到上面的效果呢有两种约束技术一种是DTD约束、一种是Schame约束。 如下图所示book.xml中引入了DTD约束文件book.xml文件中的标签就受到DTD文件的约束 !ELEMENT 书架(书) 表示根标签是书架并且书架中有子标签书
!ELEMENT 书(书名、作者、售价) 表示书是一个标签且书中有子标签书名、作者、售价
!ELEMENT 书名(#PCDATA) 表示书名是一个标签且书名里面是普通文本
!ELEMENT 作者(#PCDATA) 表示作者是一个标签且作者里面是普通文本
!ELEMENT 售价(#PCDATA) 表示售价是一个标签且售价里面是普通文本Schame约束案例 如下图所示左边的book2.xml文件就受到右边schame文件.xsd结尾的文件的约束。