properties配置文件
在Java中 xxx.properties 和 xxx.xml 这两种文件在java中一般用于做项目配置文件.
我们可以把一些配置信息写到专门的配置文件中.把这个配置信息和java的主体代码分离开.让结构更加清晰明确.
properties文件
属性文件 :后缀名以properties结尾的文件.
属性文件中的数据都是以键值对的形式存储.
java
info.welcome=欢迎使用《衣超市自助购物系统》
info.login.reg=1.登录 2.注册
info.select=请选择:
input.username=请输入用户名:
input.password=请输入密码:
input.error=输入有误,请重新输入!
login.error=登录失败!
login.success=登录成功!
reg.error=注册失败!
reg.success=注册成功!
username.notnull=用户名不能为空!
password.notnull=密码不能为空!
properties文件特点
- 只能是键值对形式
- 键不能重复
- 文件后缀名一般是.properties.
properties的常见方法
java
//创建集合对象
Properties map=new Properties();
//添加数据
//用map集合中的添加方法
map.put("key1","value1");
//Properties集合中数据一般用String类型(使用Properties特有的添加方法)
map.setProperty("key2","value2");
System.out.println(map);
properties集合继承于Map集合可以使用Map集合中的方法,但是建议使用properties集合特有的方法.(特有方法返回值都是String类型).
properties文件中数据的读写
写出数据
读取和写出文件的方法
使用IO流将数据写到txt文件中
java
//1.创建属性集合
Properties properties = new Properties();
//2.添加数据
properties.setProperty("zs","123");
properties.setProperty("ls","123");
properties.setProperty("ww","143");
//3.把集合数据存储到文件中
FileWriter fw = new FileWriter("D:\\Files\\note\\java_note\\Java\\IO学习\\user.txt");
Set<String> strings = properties.stringPropertyNames();
for (String key : strings) {
String value = properties.getProperty(key);
fw.write(key + "=" + value + "\r\n");
//fw.flush();
}
fw.close();
用properties集合特有方法简化
java
//1.创建属性集合
Properties properties = new Properties();
//2.添加数据
properties.setProperty("zs","123");
properties.setProperty("ls","123");
properties.setProperty("ww","143");
//3.把集合数据存储到文件中
//使用properties特有方法简化写法
//参数1:字符/字节流
//参数2:注释
properties.store(new FileWriter("D:\\Files\\note\\java_note\\Java\\IO学习\\user.txt")
,"This is a comment.");
将properties集合中的数据写到properties文件中只需要,将什么txt文件该为properties文件
java
//1.创建属性集合
Properties properties = new Properties();
//2.添加数据
properties.setProperty("zs","123");
properties.setProperty("ls","123");
properties.setProperty("ww","143");
//3.把集合数据存储到文件中
//使用properties特有方法简化写法
//参数1:字符/字节流
//参数2:注释
properties.store(new FileWriter("D:\\Files\\code\\java\\Practice\\Object Oriented\\src\\str\\user.properties")
,"This is a comment.");
一般情况都是将properties集合中数据写到properties文件中 .
如果不想要注释,第二个参数传null
读取数据
用IO流也可以,但是十分繁琐.
用Properties 特有方法将数据读入集合
java
//读取文件数据
//1.创建集合
Properties properties = new Properties();
//System.out.println(properties);
//把文件中数据读到集合中
properties.load(new FileReader("D:\\Files\\code\\java\\Practice\\Object Oriented\\src\\str\\user.properties"));
System.out.println(properties);
XML文件
XML属于可扩展标记语言.
本质是一种数据格式,可以用来存储复杂的数据结构,和数据关系.
xml文件的创建
XML文件后缀名为:xml,第一行必须是文档声明.
文档声明必须顶头(第一行),第一行写注释也不行 .
根标签必须有
java
<?xml version="1.0" encoding="UTF-8" ?>
<!--一个XML文件中只能有一个根标签-->
<!--根标签-->
<user>
</user>
例
java
<?xml version="1.0" encoding="UTF-8" ?>
<!--一个XML文件中只能有一个根标签-->
<!--根标签-->
<users>
<!--子标签(属性是id)-->
<user id="1">
<username>liuyan</username>
<!--标签里可以是子标签也可以是文本-->
<password>123</password>
<age>18</age>
</user>
<user id="2">
<username>liqian</username>
<password>234</password>
<age>18</age>
</user>
</users>
注释写法
生成注释快捷键Ctrl+/
java
<!--注释内容-->
字符冲突解决
方法一
如果在输入文本时需要输入,如<,&等符号会发生冲突.
解决方法
用替代符号替代.个别替代符号如上图.
详细:https://www.w3school.com.cn/h.asp
java
<massage>随便写... < < < <</massage>
查看xml文件效果方法,右键open in(在浏览器中打开)
方法二
使用上图CDATA数据区直接书写
CDATA数据区的快捷方式CD.
java
<massage>
<![CDATA[随便写... <<<< >>>> " ']]>
</massage>
应用场景
系统的配置文件(用来存储数据)
读取XML文件中数据
用IO流解析读取XML文件,难度大!也相当繁琐!
可以使用第三方工具,如:Dom4j
Dom4j使用步骤
可以用https://mvn.coderead.cn/快速搜索下载
Dom4j的实现思想
java
//1.创建解析器对象
SAXReader saxReader = new SAXReader();
//2.把xml文件加载到内存中,拿到Document对象
//参数:xml文件路径
File file = new File("D:\\Files\\code\\java\\Practice\\Object Oriented\\src\\str\\user.xml");
Document document = saxReader.read(file);
//3.获取根标签对象
Element rootElement = document.getRootElement();
//4.获取根标签下的一级子标签
List<Element> elements1 = rootElement.elements();//获取根标签下所有一级子标签
List<Element> elements2 = rootElement.elements("user");//获取根标签下所有user一级子标签
System.out.println(elements1.size());//3
System.out.println(elements2.size());//2
//5.遍历集合
for (Element userElement : elements2) {
//6.获取user标签的属性对象
//参数:属性名称(根据属性名称获取对应的属性对象)
Attribute idObj = userElement.attribute("id");
//获取id的属性值
String idValue = idObj.getValue();
//获取user标签下的子标签
List<Element> elements = userElement.elements();
for (Element element : elements) {
String text = element.getText();
System.out.println(text);
}
}
XML文件的约束
XML文件约束:就是限制XML文件只能按某种格式进行书写.
约束文件的分类
- DTD文档
- Schema文档
特殊文件的作用
存储多个用户的用户名、密码等.
properties文件和XML文件的区别
properties文件 :一般用于存储用户名和密码等一些简单的键值对数据,不复杂的信息.
XML文件 :比较复杂的信息使用XML文件存储.