Възможно дублиране:
C # събития за промяна на файлове
Искам да проследя конкретен размер на файла, когато годостигнете определен размер с помощта на C # има ли начин да се добави манипулатор на събития за промяна на размера на файла или трябва ли да се стартира безкраен процес в нишка, която продължава да проверява размера на файла? Благодаря
Отговори:
8 за отговор № 1Използвай FileSystemWatcher
да гледате промени във файла си. Когато се промени, вземете размера. Например:
var fsw = new FileSystemWatcher(@"C:pathtoyourfile");
fsw.Changed += TheFileChanged;
private void TheFileChanged(object sender, FileSystemEventArgs e)
{
if (e.ChangeType == WatcherChangeTypes.Changed)
{
var info = new FileInfo(e.FullPath);
var theSize = info.Length;
}
}
Когато приключите с проследяването на промените, изхвърлете файла си FileSystemWatcher.
3 за отговор № 2
Можете да използвате a FileSystemWatcher
и да се справя Changed
събитие. Тогава ще трябва да сравните размера на файла само когато е необходимо.
1 за отговор № 3
Искате да използвате a FileSystemWatcher, Това може да се използва за повишаване на събитие при промяна на файл. Типичната му употреба би била нещо като това
// Create a new FileSystemWatcher and set its properties.
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = args[1];
// Watch for changes in LastAccess and LastWrite times, and
// the renaming of files or directories.
watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
| NotifyFilters.FileName | NotifyFilters.DirectoryName;
// Only watch text files.
watcher.Filter = "*.txt";
// Add event handlers.
watcher.Changed += new FileSystemEventHandler(OnChanged);
watcher.Created += new FileSystemEventHandler(OnChanged);
watcher.Deleted += new FileSystemEventHandler(OnChanged);
watcher.Renamed += new RenamedEventHandler(OnRenamed);
// Begin watching.
watcher.EnableRaisingEvents = true;
След това добавете съответния EventHandler
с
// Define the event handlers.
private static void OnChanged(object source, FileSystemEventArgs e)
{
// Specify what is done when a file is changed, created, or deleted.
Console.WriteLine("File: " + e.FullPath + " " + e.ChangeType);
}
private static void OnRenamed(object source, RenamedEventArgs e)
{
// Specify what is done when a file is renamed.
Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath);
}
Надявам се това да помогне.
1 за отговор № 4
употреба FileSystemWatcher
клас и Changed
събитие.
Също така има наречен страхотен проект .NET File System Watcher.