Services
FileWatcher
Monitor files and directories for changes.
Overview
The FileWatcher service monitors files and directories for changes such as creation, modification, deletion, and renaming.
Basic Usage
use ratkit::services::file_watcher::{FileWatcher, FileEvent};
fn setup_watcher() -> std::io::Result<()> {
let watcher = FileWatcher::new("./src")
.on_change(|event: FileEvent| {
match event {
FileEvent::Created(path) => {
println!("Created: {:?}", path);
}
FileEvent::Modified(path) => {
println!("Modified: {:?}", path);
}
FileEvent::Deleted(path) => {
println!("Deleted: {:?}", path);
}
FileEvent::Renamed(old, new) => {
println!("Renamed: {:?} -> {:?}", old, new);
}
}
});
watcher.start()?;
// Keep the watcher alive
std::thread::sleep(std::time::Duration::from_secs(60));
watcher.stop()?;
Ok(())
}Event Types
- Created - New file or directory created
- Modified - File content modified
- Deleted - File or directory deleted
- Renamed - File or directory renamed
Filtering
Filter which files to watch:
let watcher = FileWatcher::new("./src")
.include(vec!["*.rs", "*.toml"]) // Only watch Rust files
.exclude(vec!["target/*", "*.lock"]) // Ignore build directory
.recursive(true); // Watch subdirectoriesDebouncing
Prevent duplicate events:
let watcher = FileWatcher::new("./src")
.debounce(Duration::from_millis(500));