Expand description
§unistore-watcher
文件监控能力 - UniStore 能力生态的一部分。
§功能特性
- 跨平台: 基于 notify 库,支持 Windows/Linux/macOS
- 事件防抖: 合并短时间内的重复事件
- 异步友好: 完美集成 tokio 异步运行时
- 路径管理: 灵活的监控路径管理
- 递归监控: 可选择监控子目录
§快速开始
use unistore_watcher::{FileWatcher, WatcherConfig, FileEvent};
use std::path::Path;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// 创建监控器
let mut watcher = FileWatcher::new(WatcherConfig::default())?;
// 添加监控路径
watcher.watch(Path::new("."))?;
// 获取事件接收器
let mut rx = watcher.subscribe();
// 处理事件(示例:只处理一个事件)
if let Ok(event) = rx.recv().await {
println!("文件事件: {}", event);
}
Ok(())
}§事件类型
use unistore_watcher::FileEvent;
use std::path::PathBuf;
fn handle_event(event: FileEvent) {
match event {
FileEvent::Created(path) => println!("创建: {:?}", path),
FileEvent::Modified(path) => println!("修改: {:?}", path),
FileEvent::Deleted(path) => println!("删除: {:?}", path),
FileEvent::Renamed { from, to } => {
println!("重命名: {:?} -> {:?}", from, to)
}
FileEvent::Accessed(path) => println!("访问: {:?}", path),
FileEvent::Other { kind, paths } => {
println!("其他 {}: {:?}", kind, paths)
}
}
}§配置选项
use unistore_watcher::WatcherConfig;
use std::time::Duration;
let config = WatcherConfig::default()
.recursive(true) // 递归监控子目录
.debounce(Duration::from_millis(100)) // 事件防抖
.buffer_size(1000) // 事件缓冲区大小
.filter_hidden(true); // 过滤隐藏文件Structs§
- File
Watcher - 文件监控器
- Watcher
Config - 监控器配置
Enums§
- File
Event - 文件系统事件
- Watcher
Error - 文件监控错误
Functions§
- watch_
path - 简化的监控 API