day21——特殊文件:XML、Properties、以及日志框架

文章目錄

      • 一、特殊文件概述
      • 二、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文件:結構化數據存儲,支持復雜關系
  • 核心學習目標:
    1. 理解文件特點與應用場景
    2. 掌握程序讀寫技術
    3. 日志記錄與問題排查

二、Properties屬性文件

2.1 文件特點
  • 后綴:.properties
  • 格式:key=value(每行一個鍵值對)
  • 注釋:以#開頭
  • 鍵不可重復,值可重復
  • 禁止行尾分號/空格(會被識別為值的一部分)
2.2 Properties類解析

在這里插入圖片描述

// 讀取屬性文件
Properties prop = new Properties();
prop.load(new FileReader("config.properties"));// 獲取值
String value = prop.getProperty("username");// 遍歷所有鍵值對
方式1Set<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 &lt; 5</data><!-- CDATA區避免轉義 -->
    <code><![CDATA[if(a<b && c>d)]]></code>
    

在這里插入圖片描述

3.2 XML解析(Dom4J)

步驟:

  1. 導入Dom4J的JAR包
  2. 創建SAXReader解析器
  3. 解析為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 日志體系結構
日志接口
SLF4J
JCL
Logback
Log4j
JUL

在這里插入圖片描述

4.2 Logback快速入門

步驟:

  1. 導入三個JAR包:
    • slf4j-api.jar
    • logback-core.jar
    • logback-classic.jar
  2. 配置文件logback.xml放于src目錄
  3. 代碼實現:
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日志

六、總結

  1. Properties文件:輕量級鍵值對存儲,適合簡單配置
  2. XML文件
    • 結構化數據存儲
    • Dom4J解析標準
    • 注意特殊字符處理
  3. 日志技術
    • Logback為核心框架
    • 通過配置文件控制輸出目標與級別

掌握這些技術能顯著提升程序健壯性、可維護性和執行效率。在實際開發中,建議根據需求靈活組合使用,如用Properties管理配置、Logback記錄運行日志等。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/914618.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/914618.shtml
英文地址,請注明出處:http://en.pswp.cn/news/914618.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

經典VB與現代VB(VB.NET)

Visual Basic&#xff08;VB&#xff09;目前其發展狀態可以分為經典VB&#xff08;VB6及之前&#xff09;?和現代VB&#xff08;VB.NET&#xff09;?兩個階段。經典VB誕生于1991年&#xff0c;憑借?“快速開發&#xff08;Rapid Application Development, RAD&#xff09;”…

iOS UI視圖面試相關

iOS UI視圖面試相關 UITableVIew相關 重用機制 cell [tableView dequeueReusableCellWillIdentifier:identifer];其中A2、A3、A4、A5是完全顯示在屏幕&#xff0c;A2、A6顯示部分&#xff0c;A1和A7不在顯示范圍內&#xff0c;假如現在是從下滑時的結果&#xff0c;在A1消失時…

網絡編程-tcp連接:服務器與客戶端

使用服務器和客戶端的代碼&#xff0c;實現服務器和客戶端的互相聊天功能 實現兩臺電腦之間互相聊天 方案一&#xff1a;服務器代碼&#xff08;server.c&#xff09;#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h>…

跨平臺移動開發技術深度分析:uni-app、React Native與Flutter的遷移成本、性能、場景與前景

1. 引言 跨平臺移動開發技術已成為提升開發效率、降低成本的戰略性選擇。uni-app、React Native&#xff08;RN&#xff09;和Flutter作為主流方案&#xff0c;在遷移成本、應用性能、適用場景及未來發展上呈現顯著差異。本報告基于最新行業數據與技術演進&#xff08;2025年&…

詳解低速容錯CAN(附與高速CAN對比表)

文章目錄前言一、低速容錯CAN-低速二、低速容錯CAN-容錯2.1 信號電平2.2 終端電阻2.3 容錯機制前言 在ISO 11898-3 Low-speed, fault-tolerant, medium-dependent interface部分描述了低速CAN的容錯行為及其物理層內容。既然稱為低速容錯CAN&#xff0c;主要需要搞清楚的兩個核…

維基框架發布 1.0.11 至中央倉,深化國產化 DevOps 生態整合

一、核心事件&#xff1a;維基框架 1.0.11 正式入駐中央倉庫? ?維基框架&#xff08;Wiki-Framework&#xff09;?? 作為國產全場景 Java 企業級開發框架&#xff0c;于 7 月 9 日正式發布 ?v1.0.11 版本? 至中央軟件倉庫&#xff08;Maven Central&#xff09;&#xf…

vscode 打開c++文件注釋亂碼

之前一直都主要用vscode編輯lua和python腳本語言&#xff0c;沒怎么編輯過c文件&#xff0c;今天想打開一個文件看一個東西&#xff0c;但是注釋全部亂碼了&#xff0c;我也知道是文件編碼的問題&#xff0c;但沒找到修改編碼格式的地方&#xff0c;好了廢話不多說&#xff0c;…

波動回升正當時!期權合成多頭:震蕩市攻守兼備利器

上周&#xff0c;A股喜提關鍵突破&#xff01;上證指數自21年初以來首次穩穩站上3500點大關&#xff0c;市場整體震蕩上行。尐程序&#xff1a;期權匯不過&#xff0c;熱鬧之下也藏有隱憂&#xff1a;雖然日均成交維持在1.4萬億加&#xff0c;但周五放量沖高&#xff08;成交達…

Python 基礎(十四): 錯誤和異常

目錄 1 錯誤2 異常 2.1 內置異常2.2 異常處理2.3 拋出異常2.4 自定義異常 程序中的錯誤我們通常稱為 bug &#xff0c;工作中我們不僅需要改自己程序中的 bug &#xff0c;還需要改別人程序中的 bug &#xff0c;新項目有 bug 要改&#xff0c;老項目也有 bug 要改&#xff…

OpenCV-Python Tutorial : A Candy from Official Main Page(三)

3.11傅立葉變換3.11.1Fourier Transform in OpenCV-cv.dft、cv.magnitude、cv.idft這兩個函數是圖像頻域處理&#xff08;如去噪、邊緣增強、紋理分析&#xff09;的基礎工具。1.cv.dft() —— 離散傅里葉變換功能&#xff1a; 將圖像從空間域&#xff08;像素強度&#xff09;…

移動端字體適配

一、移動端圖片適配1、使用 <img> 的 srcset<img src"logo.png"srcset"logo2x.png 2x,logo3x.png 3x"alt"Logo">優點&#xff1a;原生支持&#xff0c;瀏覽器自動選擇最合適的圖片。2、使用媒體查詢切換背景圖.logo {background-ima…

git起步

git官網&#xff1a;https://git-scm.com git使用手冊&#xff1a;https://git-scm.com/book/zh/v2 一、Git 是什么&#xff1f; 1、版本控制 版本控制是一種記錄一個或若干文件內容變化&#xff0c;以便將來查閱特定版本修訂情況的系統。我們經常是用的是保存軟件源代碼的…

SSL與HTTP概述

一、概念1.SSL概念SSL&#xff08;Secure Sockets Layer&#xff09;是一種網絡安全協議&#xff0c;用于在互聯網通信中建立加密鏈接&#xff0c;保護在網絡中傳輸的敏感數據免遭竊取或篡改。2.TLS概念雖然現在更先進的 TLS&#xff08;Transport Layer Security&#xff09; …

前端報錯:“Uncaught SyntaxError: missing ) after argument list

問題描述&#xff1a;前端報錯&#xff1a;“Uncaught SyntaxError: missing ) after argument list在 JavaScript 中遇到“SyntaxError: missing ) after argument list”這個錯誤通常意味著在函數調用或者聲明中&#xff0c;參數列表的括號沒有正確閉合。錯誤代碼&#xff1a…

廣州郵科光纖交換機的應用:網絡世界中的幕后核心

你知道嗎&#xff1f;在我們每天暢游互聯網&#xff0c;發送郵件、看視頻、打游戲時&#xff0c;背后支撐這一切流暢體驗的關鍵設備之一就是光纖交換機。它像一個幕后英雄&#xff0c;默默地確保信息傳輸高效、穩定。那么&#xff0c;究竟郵科光纖交換機有哪些不可或缺的應用領…

C++內存布局、構造函數規則和優化策略解析

一、類對象內存布局深度解析 1.1 核心內存占用規則 ?非靜態成員變量?&#xff1a;每個對象獨立存儲&#xff0c;按聲明順序排列&#xff08;含內存對齊填充&#xff09; 示例&#xff1a;class A{int x; char y;}; → 實際占用8字節&#xff08;413填充&#xff09;4?靜態…

Fastapi框架總覽與核心架構

Fastapi框架總覽與核心架構 FastAPI 是一個基于 Python 的現代 Web 框架&#xff0c;專注于 高性能、高并發 和 開發效率&#xff0c;特別適合構建 異步 API 服務、微服務接口&#xff0c;同時在大模型接口封裝中也廣泛應用。它基于 Starlette&#xff08;異步 Web 框架&#x…

高并發四種IO模型的底層原理

高并發四種IO模型的底層原理 1 IO讀寫的基本原理 為了避免用戶進程直接操作內核&#xff0c;保證內核安全&#xff0c;操作系統將內存&#xff08;虛擬內存&#xff09;劃分為兩部分&#xff1a;一部分是內核空間(Kernel-Space)&#xff0c;另一部分是用戶空間(User-Space)。在…

騰訊云短信實戰:Spring Boot接入YML配置與簽名/模板/發送/統計/狀態/號碼包工具類詳解

下面是一個Spring Boot集成騰訊云短信服務的詳細示例&#xff0c;包含配置和6個工具類&#xff08;簽名、模板、發送、統計、狀態&#xff09;&#xff0c;采用YML配置&#xff1a; 1. 添加Maven依賴 <dependency><groupId>com.tencentcloudapi</groupId>&…

【Java篇】IntelliJ IDEA 安裝與基礎配置指南

序 本篇文章將介紹IDEA 2023 版本。 提高開發人員的生產力。無論您是剛開始接觸編程的新手&#xff0c;還是經驗豐富的開發專家。 一&#xff1a;官網下載安裝包&#xff1a; IDEA下載鏈接 這個版本可以根據自己的需要選擇。 二、安裝方法 雙擊進這個.exe文件 這里要選擇合…