我想在目录中监视来自C应用程序的新文件。但是,我对修改后的文件不感兴趣,仅对新文件感兴趣。目前,我为此目的使用readdir / stat:
while ( (ent = readdir(dir)) != NULL ) {
strcpy(path, mon_dir);
strcat(path, "/");
strcat(path, ent->d_name);
if ( stat(path, &statbuf) == -1 ) {
printf( "Can't stat %s\n", ent->d_name );
continue;
}
if ( S_ISREG(statbuf.st_mode) ) {
if ( statbuf.st_mtime > *timestamp ) {
tcomp = localtime( &statbuf.st_mtime );
strftime( s_date, sizeof(s_date), "%Y%m%d %H:%M:%S", tcomp );
printf( "%s %s was added\n", s_date, ent->d_name );
*timestamp = statbuf.st_mtime;
}
}
}
知道如何在不保留文件列表的情况下检测 Linux和Solaris 10 上新创建的文件吗?
解决方案是将最后访问时间存储在全局变量中,并使用过滤器选择最新文件scandir()
:
int cmp_mtime( const struct dirent** lentry, const struct dirent** rentry )
:
(*lentry)->d_name
(由路径扩展,但这仅是详细信息)ltime = statbuf.st_mtime;
(*rentry)->d_name
(由路径扩展,但这仅是详细信息)rtime = statbuf.st_mtime;
if ( ltime < rtime ) return -1;
else if ( ltime > rtime ) return 1;
return 0;
int selector( const struct dirent* entry )
:
entry->d_name
(由路径扩展,但这仅是详细信息)stat.st_mtime > lastseen
然后返回1,否则返回0主要:
lastseen
scandir( directory, &entries, selector, cmp_mtime );
问题内容: 我在这里写的主要是关于从哪里开始的建议。我已经实现了一个类,该类将使用Java的WatchService递归监视目录。它可以很好地检测更改,但是我注意到了一个致命的缺陷:我无法删除包含正在监视的目录的正在监视的目录。这似乎是WatchService的限制。 我还稍微研究了Apache的VFS FileListener,但是在花了大约6个小时的时间来围绕它构建某种包装之前,我想也许我只是
问题内容: 这个问题已经在这里有了答案 : 如何查看文件中的更改? (25个答案) 7年前关闭。 我正在寻找一个跨平台的文件监视python包?我知道可以使用pywin32监视Windows上的文件,并且有可以在Linux / Unix上运行的软件包,但是有人知道跨平台的吗? 问题答案: 对于基于Unix / Linux的系统,您应该使用File Alteration Monitor Python
问题内容: 我正在使用WatchService来监视目录中的更改,尤其是在目录中创建新文件。下面是我的代码- 当我在“ mk”目录中创建文件时,我正在收到通知。但是,当我在此目录中复制某些文件时,打开该复制文件时出现异常。 我的猜测是Windows Copier对话框仍然锁定了该文件,而我无法打开该文件。因此,基本上我想知道是如何通知文件已被其他进程关闭。 上面代码的输出就像- 我已创建文件“ ”
我需要监视多个文件夹以获取新文件通知。我尝试了一个目录,它工作得很好 我的文件夹结构类似于路径。获取(“c:\users\Test”);路径path1=路径。获取(“c:\users\test1”);路径路径2=路径。获取(“c:\users\test2”); 我尝试将每个目录注册到watcher。WatchKey key1=路径1。注册(观察者、条目和创建);WatchKey key2=路径2。
问题内容: 我一直在编写一个监视目录的程序,当在目录中创建文件时,它将更改名称并将其移至新目录。在我的第一个实现中,我使用了Java的Watch Service API,当我测试1kb文件时,它可以正常工作。出现的问题是实际上创建的文件在50-300mb之间。发生这种情况时,观察程序API会立即找到该文件,但由于仍在编写中而无法移动它。我尝试将观察程序置于一个循环中(该异常会生成异常,直到可以移动
问题内容: 我只能通过FTP访问远程服务器上的目录,并且希望在目录中出现新文件后立即获取它们。 是否有FAM for Python之类的东西可以让我通过FTP监视新文件? 问题答案: 如果轮询服务器是一种选择: