<强> java使用线程监控文件目录变化的实现方法强>
,由于某种特殊的需求,弄了个使用线程监控文件目录变化的
代码基本如下,其中减去一些复杂的操作,只留下基本代码:
包com.file; 进口java.io.File; 进口java.util.ArrayList; 进口java.util.HashMap; 进口java.util.Iterator; 进口并不知道; 进口java.util.Map; 公共类FilesMonitor实现Runnable {//文件夹路径 私人字符串filePath=" D: \ \ t \ \用户当地\ \ \ \测试\ \”;//存放已读文件& lt;即:缓存目录比; 私有静态Map<字符串,File>地图=new HashMap<字符串,File> (); @Override 公共空间run () { 而(真){ 尝试{//设置每隔3秒检测一次 thread . sleep (3000); FileMonitor (); }捕捉(InterruptedException e) { e.printStackTrace (); } } }//文件监听 公共空间FileMonitor () { 文件[]文件=getfile (filePath, null); 如果文件!=零,,文件。长度比;0){//如果缓存中文件与读取的个数不一样的时候 字符串?" "; 如果文件。长度!=map.size ()) { 如果(map.size ()==0) { (文件文件:文件){ ?file.getName (); 地图。把(帧、文件); 系统。println(“新增了文件:“+帧); } 其他}{//如果减少了文件 如果(map.size()在files.length) { ListremoveName=new ArrayList (); Iterator iter=map.keySet () .iterator (); int j=0; 而(iter.hasNext ()) { 字符串键=iter.next (); 如果(钥匙!=零,,key.length()比;0){ (文件文件:文件){ ?file.getName (); 如果(fName.equals(关键)){ j=1; 打破; } } 如果(j !=1) { removeName.add(关键); } j=0; } }//判断是否有删除的文件 如果(removeName.size()在0){ (字符串条目:removeName) { map.remove(项); 系统。println(“减少了文件:“+项目); } } 其他}{ (文件文件:文件){ ?file.getName (); 如果(! map.containsKey (fName.trim ())) { 地图。把(帧、文件); 系统。println(“新增了文件:“+帧); } } } } 其他}{ map.clear (); (文件文件:文件){ ?file.getName (); 地图。把(帧、文件); } } 系统。println(“此时缓存中文件个数:”+ map.size ()); } }/* * *文件读取 * * @param filePath *路径 * @param文件名 *名称 * @return返回文件数组 */filePath公共文件[]getfile(字符串,字符串文件名){ 文件[]文件=零; 如果(文件名==null) { 医生=新文件(filePath); 如果(doc.isDirectory ()) { String [] fileNameArr=doc.list (); 如果(fileNameArr。长度比;0){ 文件=新文件(fileNameArr.length); for (int i=0;我& lt;fileNameArr.length;我+ +){ 文件名=fileNameArr[我]; 字符串fileAbsPath=filePath +文件名; 文件regInfoFile=新文件(fileAbsPath); 文件[我]=regInfoFile; } } } 其他}{ 字符串路径=filePath +文件名; 医生=新文件(路径); 如果(doc.isFile ()) { 文件=新文件[1]; 文件[0]=医生; } } 返回文件; }//启动线程 公共空间展示(){ 新FilesMonitor FilesMonitor t=(); 线面=新线程(t); tread.setName (“eshore”); tread.start (); }//主要测试 公共静态void main (String [] args) { 新FilesMonitor FilesMonitor t=(); t.show (); } } >之前 执行后,效果图如下:
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
java使用线程监控文件目录变化的实现方法