如何使用计时器监控文件大小的变化
本文关键字:变化 文件大小 监控 何使用 计时器 | 更新日期: 2023-09-27 18:05:31
private void MonitorFileForChanges()
{
Timer timerFileMonitor = new Timer();
timerFileMonitor.Interval = 10000;
timerFileMonitor.Tick += timerFileMonitor_Tick;
timerFileMonitor.Start();
}
void timerFileMonitor_Tick(object sender, EventArgs e)
{
var directory = new DirectoryInfo(userVideosDirectory);
var myFile = directory.GetFiles()
.OrderByDescending(f => f.LastWriteTime)
.First();
long oldFileSize = 0;
}
我的问题是如何检查Tick事件中的文件大小变化?当没有更多的变化时,停止计时器。
尝试使用filesystemweather:
private void WatchDirectory()
{
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = userVideosDirectory;
watcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.Size;
watcher.Filter = "*.mp4";
watcher.Changed += new FileSystemEventHandler(OnChanged);
watcher.EnableRaisingEvents = true;
}
private void OnChanged(object source, FileSystemEventArgs e)
{
if (e.ChangeType == WatcherChangeTypes.Changed)
{
var info = new FileInfo(e.FullPath);
var theSize = info.Length;
label2.BeginInvoke((Action)(() =>
{
label2.Text = theSize.ToString();
}));
}
dirchanged = true;
}
这是工作的,但是我如何检查最后的大小变化,我的意思是我如何在5或10秒后再次检查,看看是否有另一个变化,如果没有,然后停止事件?
我的意思是没有完整的事件像。
首先,如果你没有一个强有力的理由-不要使用定时器。在大多数情况下,这是一种不好的做法。考虑使用FileSystemWatcher。
关于文件大小-使用FileInfo类
您可以使用FileInfo。获取文件大小(以字节为单位)的长度。比如:
FileInfo f = new FileInfo(pathOfTheFile);
long size = f.Length;
if (this.lastSize == size)
{
timerFileMonitor.Stop();
}
else
{
this.lastSize = size;
}
当文件大小自上次以来没有改变时,可以停止计时器。只要保持一个字段的大小和比较它。