从编程实现上来说,linux下做这个事情,要比windows上做简单,windows上有相关API提供接口,比如VC下的ReadDirectoryChanges函数,但其实它的功能并不是很完善,我之前曾经做过一个windows下类似的工具,如果要做到很完善的功能,要涉及到windows底层驱动。而linux下做这个事情就简单多了,从内核2.6.13开始,inotify编程接口就已经被加入到系统内核中,用来监控文件系统事件,它能监控到的事件包含文件/文件夹的新建,删除,修改,属性被修改,打开等等,功能比windows API提供的要丰富得多。在linux下输入 man inotify即可查看该接口的编程手册,要实现对某个文件夹的监控,只需要使用该接口提供的inotify_init, inotify_add_watch, inotify_rm_watch三个函数即可。具体可以百度inotify,很容易就能找到相关示例代码。
附Linux下inotify编程接口部分截图:
点击图片可以看大图。
我没法给你源码,但可以给你思路:【最简单粗暴的】
1. 写一个死循环
2. sleep 个 100 毫秒
3. 第一次启动建立一个HashMap<File, Date>,扫描所有文件并读取创建日期记录下来(包括子文件夹)
4. 记录全部文件的数量 fileCount, lastFileCount
5. 检查是否数量有变,如果木有就没有新增文件
6. 如果有变化,。。。。你懂的,再扫找出不在HashMap里面的就是新增的了
【特殊参考】
参考tomcat、jboss这类服务器软件如何扫面检测部署文件夹下面文件变动的
【高阶】
参考防毒软件设计原理,截获系统IO,有对你指定文件夹的Access *** 作时,按需记录
1、首先启动linux *** 作系统在进入到界面。
2、输入ls -l回车可以看到下图wr-r-r,r表示文件可以读取,w表示可写,x表示可执行,r--是可读的,不能写入,不能执行。
3、也可以看到其它文件看看,这里看是etc配置文件。
4,这里的权限是root,所以root是最大的。在Linux上,您可以查看指定文件夹的权限。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)