java使用线程监控文件目录变化的实现方法

  

<强> 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 ();   Iteratoriter=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 ();   }   }      之前      

执行后,效果图如下:
  

  

癹ava使用线程监控文件目录变化的实现方法"

  

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

java使用线程监控文件目录变化的实现方法