即当目录中的文件发生COpy,Cut等操作时,我需要能够即时的知道,这个在Java里能够实现吗

解决方案 »

  1.   

    这个问题要看你是怎么实现copy,cut的,如果是用java实现的那么用一个监听模式就可以实现了
    ,JDK专门提供了对监听模式的支持,就是Observer类,如果你使用的鼠标操作实现的,那么不好意思至少我不知道如何去做
      

  2.   

    public class A
    {
        public static void main(String[] args) 
        {
            File a = new File("c:\\test");
            
            int i = a.list().length;
            int j = 0;
            
            while(1==1)
            {
                j = a.list().length;
                
                if (i != j)
                {
                    System.out.println("File modified");
                    i = j;
                }
            }
            
        }
    }
      

  3.   

    laodujxx(叛逆的我很恶劣,后果很严重) 你的是个死循环,太耗资源了,我正在找一个可以后台运行且功能类似与SQLServer中的触发器的方法。
      

  4.   

    回复人: qjyh(牵机引幻) ( ) 
    ================================
    我没有在循环里面涉及产生对象的代码啊?
      

  5.   

    那就用timer来监视吧 1ms扫描一次
    如果文件得大小不同肯定能检测出来
    若copy cut得时间小于1ms,就无能为力了
    import java.io.*;
    import java.util.*;
    public class Reminder {
    Timer timer;
      String str;
        public Reminder() {
        timer = new Timer();
        timer.schedule(new RemindTask(),0,1);
        }
       class RemindTask extends TimerTask 
        {
         File a = new File("C:\\temp");
      int j = 0;
    int i = a.list().length;
            public void run() 
            {
             j=a.list().length;
             if (i != j)
             {
             try
               {
                str=Calendar.getInstance().getTime()+"Files have been changed";
                i = j;
                System.out.println(str);                     }
               catch(Exception e){System.out.println("java Reminder err "+e );}
            }  
           }     
          }    
              public static void main(String args[])
        {
         System.out.println("File Detection Is Ready...");
         new Reminder();
        }
      }