文章目錄
- 一、特殊文件概述
- 二、Properties屬性文件
- 2.1 文件特點
- 2.2 Properties類解析
- 2.3 寫入屬性文件
- 三、XML文件詳解
- 3.1 XML核心特性
- 3.2 XML解析(Dom4J)
- 3.3 XML寫入
- 3.4 XML約束(了解)
- 四、日志技術(Logback)
- 4.1 日志體系結構
- 4.2 Logback快速入門
- 4.3 日志配置文件logback.xml
- 4.4 日志級別
- 六、總結
在Java開發中,處理特殊文件、使用日志技術和實現多線程是必備的核心技能。本文將深入解析Properties屬性文件、XML文件、Logback日志框架以及多線程的實現方式,結合理論講解和代碼示例,幫助開發者全面掌握這些關鍵技術。
一、特殊文件概述
普通文本文件(如.txt
)缺乏結構化格式,不便于程序處理數據。而特殊文件通過預定義格式解決此問題:
- Properties文件:鍵值對存儲,常用于配置文件
- XML文件:結構化數據存儲,支持復雜關系
- 核心學習目標:
- 理解文件特點與應用場景
- 掌握程序讀寫技術
- 日志記錄與問題排查
二、Properties屬性文件
2.1 文件特點
- 后綴:
.properties
- 格式:
key=value
(每行一個鍵值對) - 注釋:以
#
開頭 - 鍵不可重復,值可重復
- 禁止行尾分號/空格(會被識別為值的一部分)
2.2 Properties類解析
// 讀取屬性文件
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 寫入屬性文件
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">
) - 正確嵌套(禁止交叉嵌套)
- 成對出現(
- 特殊字符處理:
<!-- 使用轉義符 --> <data>3 < 5</data><!-- CDATA區避免轉義 --> <code><![CDATA[if(a<b && c>d)]]></code>
3.2 XML解析(Dom4J)
步驟:
- 導入Dom4J的JAR包
- 創建SAXReader解析器
- 解析為Document對象
導入Dom4J的步驟:
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):
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約束:簡單數據類型限制
<!ELEMENT student (name, age)> 表示student 標簽下面只有 name和age 標簽 <!ELEMENT name (#PCDATA)>
- Schema約束:支持復雜數據類型
<xs:element name="age" type="xs:integer"/>
四、日志技術(Logback)
4.1 日志體系結構
4.2 Logback快速入門
步驟:
- 導入三個JAR包:
slf4j-api.jar
logback-core.jar
logback-classic.jar
- 配置文件
logback.xml
放于src目錄 - 代碼實現:
private static final Logger LOGGER = LoggerFactory.getLogger(類名);public static void main(String[] args) {LOGGER.debug("調試信息");LOGGER.info("業務操作記錄");LOGGER.error("錯誤堆棧", exception);
}
4.3 日志配置文件logback.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記錄運行日志等。