title: 特殊文件
index_img: https://tuchuangs.com/imgs/2023/08/13/c648af4d798edc8f.png
tags:
- Java SE
categories:
- Java SE
excerpt: 特殊文件
文本文件
普通文本文件txt:
- 内容随便写,无格式,无限制。
- 但是你按照规则来写也是可以读的【properties的方法来读即可】
特殊文本文件(易读、易解析):
-
properties
:- 是集合,但不会当集合使用,往往用于配置文件
- 键值对格式,键不可重复。
- 适用于对象属性较少
-
XML
- 可以表示更加复杂的关系
- 可以自定义标签
- 标签中可以使用属性
- 参考html
properties
读取数据
- 文本文件可使用字节或字符流
构造器/方法 | 说明 |
---|---|
public Properties() //构造器 | 用于构建Properties集合对象(空参) |
public void load(Inputstream is) | 通过字节输入流,读取属性文件里的键值对数据 |
public void load(Reader reader) | 通过字符输入流,读取属性文件里的键值对数据 |
public string getProperty(string key) | 根据键获取值(其实就是get方法的效果),独有一般不用Map提供的 |
public Set |
获取全部键的集合(其实就是ketSet方法的效果) |
public class Main {
public static void main(String[] args) {
try {
extracted();
} catch (FileNotFoundException e) {
System.out.println("文件路径不存在");
} catch (IOException e) {
System.out.println("读取失败");
}
}
private static void extracted() throws IOException {
Properties prop = new Properties(); //properties对象
FileReader fileReader = new FileReader("src/main/java/bid/simpleword/pl/test.properties"); //需要一个输入流
prop.load(fileReader); //读取键值对
fileReader.close();
Set<String> user = prop.stringPropertyNames(); //键的集合
user.forEach(s -> System.out.println(s + ":" + prop.getProperty(s))); //打印键值对
}
}
写入数据
public class Main {
public static void main(String[] args) {
try {
extracted();
} catch (FileNotFoundException e) {
System.out.println("文件路径不存在");
} catch (IOException e) {
System.out.println("读取失败");
}
}
private static void extracted() throws IOException {
Properties prop = new Properties(); //properties对象
prop.setProperty("张1", "1232");
prop.setProperty("张2", "1232");
prop.setProperty("张3", "1232");
prop.setProperty("张4", "1232");
//输出流并追加
FileWriter fileWriter = new FileWriter("src/main/java/bid/simpleword/pl/test.properties", true);
prop.store(fileWriter, "存储了一些用户");
fileWriter.close();
}
}
XML
<?xml version="1.0" encoding="UTF-8" ?>
<!--上方这一行必须要,且必须在最上面-->
<!--根标签[users]只能有一个-->
<users>
<admin>
<name>管理员</name>
</admin>
<user>
<name>张三</name>
<age>16</age>
<sex>女</sex>
</user>
<user>
<name>里斯</name>
<age>16</age>
<sex>男</sex>
</user>
<user>
<name>张开</name>
<age>12</age>
<sex>女</sex>
</user>
</users>
解析
解析使用
Dom4j
第三方框架,它的解析思想,类似于js的文档树
public class Main {
public static void main(String[] args) throws DocumentException {
SAXReader saxReader = new SAXReader();
Document doc = saxReader.read("src/main/java/bid/simpleword/pl/test.xml");
System.out.println("------根标签对象--------");
Element rootElement = doc.getRootElement();
System.out.println("Root Element: " + rootElement.getName());
System.out.println("------下一级标签对象----------");
List<Element> elements = rootElement.elements();
for (Element element : elements) {
System.out.println("Element Name: " + element.getName());
}
System.out.println("------下一级标签对象中的所有user对象----------");
List<Element> userElements = rootElement.elements("user");
for (Element userElement : userElements) {
System.out.println("User Element: " + userElement.getName());
System.out.println("Name: " + userElement.elementText("name"));
System.out.println("Age: " + userElement.elementText("age"));
System.out.println("Sex: " + userElement.elementText("sex"));
System.out.println();
}
System.out.println("------属性值----------");
Element admin = rootElement.element("admin");
System.out.println("Admin Name Attribute: " + admin.attributeValue("name"));
}
}
生成
用
Stringbuilder
拼接为XML,IO流
写入
public class Main {
public static void main(String[] args) throws IOException {
StringBuilder sbr = new StringBuilder();
sbr.append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>")
.append("\n").append("<books>")
.append("\n").append("<book>")
.append("\n").append("<name>入门到精通</name>")
.append("\n").append("<version>1.0.1</version>")
.append("\n").append("</book>")
.append("\n").append("<book>")
.append("\n").append("<name>入门到精通2</name>")
.append("\n").append("<version>1.0.1</version>")
.append("\n").append("</book>")
.append("\n").append("</books>");
BufferedWriter bw = new BufferedWriter(new FileWriter("src/main/java/bid/simpleword/pl/1.xml"));
bw.write(sbr.toString());
bw.close(); // 记得关闭流
}
}
标签:文件,特殊,System,prop,println,public,append,out
From: https://www.cnblogs.com/SimpleWord/p/17689193.html