Like FileSystemWatcher except you control when the state is checked. This allows it to work well for scheduled tasks instead of relying on continuous jobs.
class Program
{
const string FileName = "state.bin";
static void Main(string[] args)
{
var state = new FileSystemState(Environment.CurrentDirectory, "*.txt", new EnumerationOptions { RecurseSubdirectories = true });
if (File.Exists(FileName))
{
// If the file exists, get file system state from the file
using (var stream = File.OpenRead(FileName))
{
state.LoadState(stream);
}
}
else
{
// Otherwise, get the current file system state
state.LoadState();
}
var changes = state.GetChanges(); // Looks for changes in file system state
using (var stream = File.OpenWrite(FileName))
{
state.SaveState(stream);
}
}
}