问高手一个问题,一个守护线程定时检测一个指定的目录下是否有文件,如果检测到有文件了,另一个线程对文件进行读取复制到另一个地方,完成后删除源文件,这一不停的检测那个指定的目录里是否放了文件这个应该怎么写

解决方案 »

  1.   

    或者开个线程
    run方法里加个while循环,循环里检测一次就sleep一段时间
      

  2.   

    使用 java.util.concurrent包提供的实现定时器。
      

  3.   


    import java.io.*;
    class Worker implements Runnable{
        private String src;
        private String des;
        private int interval;
        Worker(String src,String des,int interval){
            this.src=src;
            this.des=des;
            this.interval=interval;
        }
        public void run(){
             while(true){
                 File file=new File(src);
                 String[] subfile=file.list();
                 if(subfile==null || subfile.length==0){
                     System.out.println("没文件!");
                 }else{
                     System.out.println("有文件!");
                     //复制,然后删除
                     File desFile=new File(des);
                     if(!desFile.exists())desFile.mkdirs();
                     for(int i=0;i<subfile.length;i++){
                         File d=new File(des,subfile[i]);
                         if(d.exists())d.delete();
                         File f=new File(src+"/"+subfile[i]);
                         f.renameTo(new File(des,subfile[i]));
                     }
                 }
                 try{
                     Thread.sleep(interval);
                }catch(Exception e){
                     e.printStackTrace();
                }
            }
        }
    }public class TimerTest{
        public static void main(String rags[]){
             String src="src";//被检测的目录
             String des="des";//新存放的目录
             int interval=5000;//时间间隔
             Worker w = new Worker(src,des,interval);
             new Thread(w).start();
        }
    }