WatchFile.Core
2.5.0
dotnet add package WatchFile.Core --version 2.5.0
NuGet\Install-Package WatchFile.Core -Version 2.5.0
<PackageReference Include="WatchFile.Core" Version="2.5.0" />
<PackageVersion Include="WatchFile.Core" Version="2.5.0" />
<PackageReference Include="WatchFile.Core" />
paket add WatchFile.Core --version 2.5.0
#r "nuget: WatchFile.Core, 2.5.0"
#:package WatchFile.Core@2.5.0
#addin nuget:?package=WatchFile.Core&version=2.5.0
#tool nuget:?package=WatchFile.Core&version=2.5.0
WatchFile.Core - 智能文件监控库
专为工控环境设计的高性能文件监控库,支持 .NET Framework 4.6.1+ 和 .NET 6+。
🆕 v2.5.0 新功能
� 简化离线变化处理
- 自动联动模式 - 新增
autoTriggerFileChangedEvents
配置,离线变化可自动转换为 FileChanged 事件 - 统一事件处理 - 用户只需处理一个 FileChanged 事件,离线和实时变化统一处理
- 配置灵活性 - 支持自动模式和手动模式,满足不同使用场景
⚡ 用户体验优化
- 默认配置优化 -
TriggerEventsForNewFiles
默认为 true,提升测试体验 - 文档完善 - 添加详细的使用模式说明和最佳实践
✨ 核心特性
- ✅ 智能监控 - 目录/文件变化实时监控,支持递归监控
- ✅ 内容分析 - 精确的行级、字段级变化分析
- ✅ 格式支持 - CSV、Excel文件解析,支持多种编码
- ✅ 离线检测 - 重启后自动检测停机期间的文件变化
- ✅ 工控优化 - 专为大量小文件监控场景设计
- ✅ 配置驱动 - JSON配置,支持排除模式和自动删除
🚀 快速开始
// 1. 创建监控管理器
var manager = new WatchManager("watchfile-config.json");
// 2. 订阅事件
manager.FileChanged += (sender, e) => {
Console.WriteLine($"文件变化: {e.FilePath}");
Console.WriteLine($"变化类型: {e.ChangeType}");
// 查看详细变化
if (e.ChangeDetails != null && e.ChangeDetails.HasChanges) {
Console.WriteLine($"新增行: {e.ChangeDetails.AddedRows.Count}");
Console.WriteLine($"删除行: {e.ChangeDetails.DeletedRows.Count}");
Console.WriteLine($"修改行: {e.ChangeDetails.ModifiedRows.Count}");
}
};
// 3. 离线变化检测事件
manager.OfflineChangesDetected += (sender, e) => {
var summary = e.GetSummary();
Console.WriteLine($"离线检测: {summary}");
};
// 4. 启动监控
await manager.StartAsync();
⚙️ 配置示例
{
"version": "1.0",
"globalSettings": {
"enableLogging": true,
"logLevel": "Info",
"offlineChangeDetection": {
"enabled": true,
"triggerEventsForNewFiles": true,
"triggerEventsForDeletedFiles": true,
"autoTriggerFileChangedEvents": true,
"comparisonMethod": "TimestampAndSize"
}
},
"watchItems": [{
"id": "csv-monitor",
"name": "CSV文件监控",
"enabled": true,
"path": "C:\\Data",
"type": "Directory",
"fileFilters": ["*.csv"],
"watchEvents": ["Created", "Modified"],
"deleteAfterProcessing": false,
"fileSettings": {
"fileType": "CSV",
"hasHeader": true,
"delimiter": ",",
"encoding": "UTF-8"
}
}]
}
📚 完整文档
🎯 适用场景
- 工控设备日志文件监控
- 数据文件变化实时分析
- 批处理文件自动化处理
- 文件内容差异追踪
- 生产环境文件监控
📄 许可证
MIT License - 查看 LICENSE
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
.NET Framework | net461 is compatible. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
-
.NETFramework 4.6.1
- CsvHelper (>= 30.0.1)
- Newtonsoft.Json (>= 13.0.3)
- NPOI (>= 2.6.2)
- System.Text.Encoding.CodePages (>= 6.0.0)
- System.ValueTuple (>= 4.5.0)
-
net6.0
- CsvHelper (>= 30.0.1)
- Newtonsoft.Json (>= 13.0.3)
- NPOI (>= 2.6.2)
- System.Text.Encoding.CodePages (>= 6.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
v2.5.0:
- 🚀 重大改进:新增 AutoTriggerFileChangedEvents 配置选项
- ✨ 自动模式:离线检测变化可自动转换为 FileChanged 事件,简化用户代码
- 🎛️ 手动模式:保留原有 OfflineChangesDetected 事件处理方式
- 🔧 配置优化:TriggerEventsForNewFiles 默认改为 true,提升测试体验
- 📚 文档完善:添加详细的使用模式说明和配置参考
v2.4.1:
- 📝 文档更新:同步更新README.md和API.md到v2.4.0版本内容
- 🔄 NuGet包描述更新:包含最新功能介绍和使用指南
v2.4.0:
- 🔍 离线变化检测:监控器重启时自动检测停机期间的文件变化
- ⚡ 性能优化:移除ExtractedData冗余属性,减少内存占用
- 🏷️ 类名优化:WatchFileManager → WatchManager,API更清晰
- 🛠️ Bug修复:离线检测文件支持配置驱动的自动删除
- ⚙️ 执行优化:先执行离线检测再初始化watchfile,确保准确性
v2.3.0:
- 🚀 新增配置驱动的自动删除功能:DeleteAfterProcessing
- 🛡️ 智能文件清理:自动删除主文件和缓存文件
- 🔧 强制删除机制:自动清除只读、隐藏、系统属性
- 📁 缓存目录管理:自动清理空的缓存目录
- ❌ 重要变更:移除2.2.0版本的手动删除API(SafeDeleteFileAsync等)
- 🔄 架构优化:改为配置驱动的自动删除,更适合工控环境
- 🧹 代码重构:清理未使用的方法,简化API设计
- ⚙️ 使用方式:现在只需在配置中设置"DeleteAfterProcessing": true
v2.2.0:
- 🚀 新增安全删除功能:SafeDeleteFileAsync, SafeDeleteMonitoredFileAsync
- 🛡️ 强制删除机制:自动清除只读、隐藏、系统属性,解决工控环境权限问题
- 🔧 智能文件处理:临时禁用监控事件,避免删除操作触发自身监控
- 📦 自动编码处理:内置 System.Text.Encoding.CodePages,无需手动注册
- 🧪 完整测试支持:ConsoleTest 集成安全删除测试和配置控制
- ⚡ 性能优化:简化文件释放检查,移除复杂的独占访问检测
v2.1.1:
- 重要修复:GetAllWatchItems现在返回所有配置项,包括路径不存在的项
- 改进:将路径验证从配置加载阶段移至监控启动阶段
- 增强:用户现在可以看到完整的配置列表,便于识别有问题的监控项
- 优化:在启动监控时提供更友好的路径错误提示
v2.1.0:
- 新增静态配置校验方法:ValidateConfigurationFile, ValidateConfigurationObject
- 新增LoadAndValidateConfiguration方法:一次调用完成配置校验和加载
- 修复GetAllWatchItems在StartAsync之前调用返回空列表的问题
- 改进配置管理器,支持在构造函数中加载配置
- 增强API文档和使用示例
v2.0.0:
- 支持详细的文件内容变化分析
- 优化工控环境大量小文件监控
- 临时文件缓存机制
- 支持 .NET Framework 4.6.1+ 和 .NET 6+
- CSV/Excel 文件智能差异检测
- 可配置的列映射和数据类型转换