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 }