文章目录
-
-
- 一、特殊文件概述
- 二、Properties属性文件
-
- [2.1 文件特点](#2.1 文件特点)
- [2.2 Properties类解析](#2.2 Properties类解析)
- [2.3 写入属性文件](#2.3 写入属性文件)
- 三、XML文件详解
-
- [3.1 XML核心特性](#3.1 XML核心特性)
- [3.2 XML解析(Dom4J)](#3.2 XML解析(Dom4J))
- [3.3 XML写入](#3.3 XML写入)
- [3.4 XML约束(了解)](#3.4 XML约束(了解))
- 四、日志技术(Logback)
-
- [4.1 日志体系结构](#4.1 日志体系结构)
- [4.2 Logback快速入门](#4.2 Logback快速入门)
- [4.3 日志配置文件logback.xml](#4.3 日志配置文件logback.xml)
- [4.4 日志级别](#4.4 日志级别)
- 六、总结
-
在Java开发中,处理特殊文件、使用日志技术和实现多线程是必备的核心技能。本文将深入解析Properties属性文件、XML文件、Logback日志框架以及多线程的实现方式,结合理论讲解和代码示例,帮助开发者全面掌握这些关键技术。
一、特殊文件概述
普通文本文件(如.txt
)缺乏结构化格式,不便于程序处理数据。而特殊文件通过预定义格式解决此问题:
- Properties文件:键值对存储,常用于配置文件
- XML文件:结构化数据存储,支持复杂关系
- 核心学习目标:
- 理解文件特点与应用场景
- 掌握程序读写技术
- 日志记录与问题排查
二、Properties属性文件
2.1 文件特点
- 后缀:
.properties
- 格式:
key=value
(每行一个键值对) - 注释:以
#
开头 - 键不可重复,值可重复
- 禁止行尾分号/空格(会被识别为值的一部分)
2.2 Properties类解析

java
// 读取属性文件
Properties prop = new Properties();
prop.load(new FileReader("config.properties"));
// 获取值
String value = prop.getProperty("username");
// 遍历所有键值对
方式1:
Set<String> keys = prop.stringPropertyNames();
for (String key : keys) {
String value = properties.getProperty(key);
System.out.println(key + "---->" + value);
}
方式2:
prop.forEach((k, v) -> System.out.println(k + " : " + v));
2.3 写入属性文件

java
Properties prop = new Properties();
prop.setProperty("ip", "192.168.1.1");
prop.setProperty("port", "8080");
// 写入文件(第二个参数为注释)
prop.store(new FileWriter("server.properties"), "Server Config");

注意 :
store()
方法的注释参数必须非空
三、XML文件详解
3.1 XML核心特性
-
文档声明 :首行固定格式
<?xml version="1.0" encoding="UTF-8"?>
-
单根标签:有且仅有一个根元素
-
标签规则 :
- 成对出现(
<tag></tag>
) - 属性可自定义(
<user id="1">
) - 正确嵌套(禁止交叉嵌套)
- 成对出现(
-
特殊字符处理 :
xml<!-- 使用转义符 --> <data>3 < 5</data> <!-- CDATA区避免转义 --> <code><![CDATA[if(a<b && c>d)]]></code>

3.2 XML解析(Dom4J)
步骤:
- 导入Dom4J的JAR包
- 创建SAXReader解析器
- 解析为Document对象
导入Dom4J的步骤:
java
SAXReader reader = new SAXReader();
Document doc = reader.read("data.xml");
// 获取根元素
Element root = doc.getRootElement();
// 遍历子元素
List<Element> users = root.elements("user");
for (Element user : users) {
String name = user.elementText("name");
String id = user.attributeValue("id");
System.out.println(id + ":" + name);
}
3.3 XML写入
推荐使用StringBuilder拼接(避免Dom4J复杂API):
java
StringBuilder sb = new StringBuilder();
sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
sb.append("<books>\n");
sb.append("\t<book>\n");
sb.append("\t\t<title>Java Core</title>\n");
sb.append("\t</book>\n");
sb.append("</books>");
Files.write(Paths.get("books.xml"), sb.toString().getBytes());
3.4 XML约束(了解)
-
DTD约束 :简单数据类型限制
dtd<!ELEMENT student (name, age)> 表示student 标签下面只有 name和age 标签 <!ELEMENT name (#PCDATA)>
-
Schema约束 :支持复杂数据类型
xsd<xs:element name="age" type="xs:integer"/>
四、日志技术(Logback)

4.1 日志体系结构
日志接口 SLF4J JCL Logback Log4j JUL

4.2 Logback快速入门
步骤:
- 导入三个JAR包:
slf4j-api.jar
logback-core.jar
logback-classic.jar
- 配置文件
logback.xml
放于src目录 - 代码实现:
java
private static final Logger LOGGER =
LoggerFactory.getLogger(类名);
public static void main(String[] args) {
LOGGER.debug("调试信息");
LOGGER.info("业务操作记录");
LOGGER.error("错误堆栈", exception);
}

4.3 日志配置文件logback.xml
核心配置项:
xml
<!-- 输出到控制台 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- 输出到文件 -->
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>app.log</file>
<encoder>
<pattern>%date %level [%thread] %logger{10} %msg%n</pattern>
</encoder>
</appender>
<!-- 设置日志级别 level="INFO" 表示只记录info级别和info级别以上的日志-->
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
4.4 日志级别

优先级从低到高:
TRACE < DEBUG < INFO < WARN < ERROR
- 仅输出≥配置级别的日志
- 配置
level="WARN"
时,只记录WARN和ERROR日志
六、总结
- Properties文件:轻量级键值对存储,适合简单配置
- XML文件 :
- 结构化数据存储
- Dom4J解析标准
- 注意特殊字符处理
- 日志技术 :
- Logback为核心框架
- 通过配置文件控制输出目标与级别
掌握这些技术能显著提升程序健壮性、可维护性和执行效率。在实际开发中,建议根据需求灵活组合使用,如用Properties管理配置、Logback记录运行日志等。