# FileWatch **Repository Path**: bogegit/FileWatch ## Basic Information - **Project Name**: FileWatch - **Description**: 监听目录文件变化,并生成唯一值保存到xml配置中 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-03-13 - **Last Updated**: 2026-08-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FileWatch 文件监听与自动化处理服务 `FileWatch` 是一个基于 **Kotlin 2.0 + JDK 21** 开发的高性能文件目录监控与资源自动化构建服务。支持对多目录下的变动事件进行无感监听,自动联动 `cwebp` / `pngquant` 进行图片压缩与 WEBP 格式转换,并自动维护 XML/JSON 资源索引文件。 --- ## 🌟 核心特性 - 🚀 **事件驱动与零 CPU 空转**:采用 `LinkedBlockingQueue` 阻塞队列处理变更事件,无变动时线程自动挂起,保持低内存与低 CPU 消耗。 - ⚡ **300ms 智能防抖合并 (Debounce)**:对高频触发的文件保存与写操作进行合并节流,避免重复处理和 I/O 浪费。 - 🌙 **Windows 休眠/唤醒无感适配**:借助 JNA 监听 Win32 `WM_POWERBROADCAST` 消息,在电脑休眠前主动暂停监听并释放句柄,唤醒后自动重新挂载,避免 `WatchService` 句柄卡死失效。 - 🖼️ **图片自动化管道**: - 支持联动 `pngquant` 对 PNG 进行无损/有损高压缩率优化; - 支持联动 `cwebp` 自动化转码 WEBP 资源; - 自动生成并更新 XML/JSON 资源索引表。 - 📌 **系统托盘与轻量化运行**:支持 AWT/Swing 系统托盘图标交互,打包为原生 `.exe` 后自动最小化后台静默运行。 --- ## 🛠️ 配置说明 (`data.json`) 在应用运行根目录或用户主目录下放置 `data.json` 配置文件: ```json [ { "name": "resConfig", "extension": "xml", "watchFile": "D:/Project/Assets", "outPath": "D:/Project/Assets", "excludes": [".tmp", ".webp"], "compressPng": { "enable": true, "suffix": "_low", "quality": "10-80", "autoClean": true }, "webp": { "enable": true, "compress": true, "webpQuality": 75, "autoClean": true } } ] ``` ### 字段说明: - `watchFile`:需要监控的目标目录路径; - `outPath`:索引文件与产出资源的保存路径; - `excludes`:排除的扩展名或文件名后缀; - `compressPng`:PNG 图片压缩配置(`enable` 是否启用,`quality` 压缩质量); - `webp`:WEBP 转码配置(`enable` 是否启用,`webpQuality` 转码质量)。 --- ## 📦 构建与打包 ### 环境要求: - JDK 21+ - Maven 3.8+ ### 编译命令: ```bash mvn clean compile ``` ### 全量打包(生成 JAR 与 EXE): ```bash mvn clean package -DskipTests ``` 构建成功后,将在 `out/` 目录下生成: - `FileWatch.jar`(包含全量依赖的肥 JAR) - `FileWatch.exe`(经 Launch4j 包装的 Windows 可执行文件)