Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: com/memoire/fu/FuFileTracker.java


1   /**
2    * @modification $Date: 2002/12/16 18:56:26 $
3    * @statut       unstable
4    * @file         FuFileTracker.java
5    * @version      0.36
6    * @author       Guillaume Desnoix
7    * @email        guillaume@desnoix.com
8    * @license      GNU General Public License 2 (GPL2)
9    * @copyright    1998-2001 Guillaume Desnoix
10   */
11  
12  package com.memoire.fu;
13  
14  import com.memoire.fu.*;
15  
16  import java.io.*;
17  import java.util.*;
18  
19  public class FuFileTracker
20  {
21    private static boolean checkFile(File _file, long _since)
22    {
23      return (_file!=null)&&_file.exists()&&(_file.lastModified()>_since);
24    }
25  
26    private static final void check(Vector _r, File _file,
27            long _since, boolean _recursive)
28    {
29      if((_file==null)||!_file.exists()) return;
30  
31      /* @GCJ
32      try {  _file=_file.getCanonicalFile(); }
33      catch(IOException ex) { return; }
34      */
35      _file=new File(_file.getAbsolutePath());
36  
37      if(_r.contains(_file)) return;
38  
39      if(checkFile(_file,_since))  _r.addElement(_file);
40  
41      if(_file.isDirectory()&&_recursive)
42      {
43        //System.err.print("\rChecking "+_file+" ("+_r.size()+")\033[K\r");
44        //System.err.flush();
45        /*
46        File[] files=_file.listFiles();
47        if(files!=null)
48    for(int i=0;i<files.length;i++)
49      check(_r,files[i],_since,_recursive);
50        */
51        String[] files=_file.list();
52        if(files!=null)
53    for(int i=0;i<files.length;i++)
54      check(_r,new File(_file,files[i]),_since,_recursive);
55      }
56    }
57  
58    public static File[] check(File _file, long _since, boolean _recursive)
59    {
60      Vector v=new Vector();
61      check(v,_file,_since,_recursive);
62  
63      int    l=v.size();
64      File[] r=new File[l];
65      for(int i=0;i<l;i++) r[i]=(File)v.elementAt(i);
66      return r;
67    }
68  
69    public static void main(String[] _args)
70    {
71      if(_args.length==0) _args=new String[] { "/tmp" };
72  
73      long daemon=0l;
74  
75      do
76      {
77        long    before   =System.currentTimeMillis();
78        boolean recursive=false;
79        long    delay    =86400000l;
80  
81        for(int i=0;i<_args.length;i++)
82        {
83          if("-r".equals(_args[i]))
84          {
85      recursive=true;
86          }
87          else
88    if("-d".equals(_args[i]))
89          {
90      i++;
91      daemon=Long.parseLong(_args[i]);
92    }
93    else
94    if("-t".equals(_args[i]))
95    {
96      i++;
97      delay=Long.parseLong(_args[i]);
98    }
99          else
100         {
101           File[] f=check(new File(_args[i]),before-delay,recursive);
102     if(daemon>0l)
103       System.out.println
104         ("\033[0;0H\033[2J["+f.length+
105          " new files found in "+_args[i]+"]");
106     for(int j=0;j<f.length;j++)
107       System.out.println(f[j]);
108   }
109       }
110 
111       long after=System.currentTimeMillis();
112       if(daemon>after-before+10l)
113       {
114   try { Thread.sleep(daemon-(after-before)); }
115   catch(InterruptedException ex) { }
116       }
117     } while(daemon>0l);
118   }
119 }