接續《CS 架構軟體自動升級實現(三)》,本文深入解析自動升級系統中的配置文件處理核心類 Config.java 以及數據傳輸對象 UpdFile.java 的設計與實現。
Config 類採用單例模式,負責讀取並解析 XML 格式的配置文件 autoupdate.xml,提供版本號、伺服器 IP、端口、待更新文件列表等關鍵配置信息的存取介面。
getInstance() 確保全局唯一配置實例,refresh() 支援熱加載。SAXReader) 解析配置文件,支援 XPath 查詢 (selectNodes) 提取元素文本。getVerstion()、getServerIp()、getServerPort()、getFiles() 等方法,將 XML 節點映射為強類型對象。getFiles() 方法解析 <Files> 節點下的 <File> 或 <Dir> 子元素,構建 UpdFile 物件陣列,包含名稱、路徑、類型(文件/目錄)、版本號。formatPath/unformatPath)、命令字節碼編解碼 (getCmd/parseCmd)、長度編碼 (getLen)、陣列複製 (copyArray) 及日誌列印 (print) 等輔助功能。public class Config {
public static String cfgFile = ".\\config\\autoupdate.xml";
private static Config config = null;
private Document doc = null;
public static Config getInstance() { /* 單例獲取 */ }
private Config() { /* Dom4j 解析 XML */ }
public String getVerstion() { /* XPath 查詢 Version 節點 */ }
public UpdFile[] getFiles() { /* 解析 Files 節點構建 UpdFile 陣列 */ }
// ... 其他 getter 與工具方法
}
UpdFile 實現 Serializable 介面,作為服務端與客戶端之間傳輸文件元數據的載體。雖然最初設計意圖是直接在網絡傳輸中使用,但後續實現中改為由 Config 解析後構建,故在最終方案中僅作為數據容器使用。
name:文件名稱path:相對路徑type:類型(0=文件,1=目錄)version:版本號提供完整的 Getter/Setter 及建構子重載,toString() 方便調試輸出。雖未直接用於網絡傳輸,但結構清晰,易於擴展。
《CS 架構軟體自動升級實現》系列至此全部完成。本系列為原創實踐,涵蓋從配置管理、文件傳輸、版本比對到自動安裝的完整鏈路。若需轉載請註明出處,謝謝。