Rev 10 | Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
6 | ls | 1 | /* ============================================================================ |
2 | # Create |
||
3 | # name : Andre Rikkert de Koe date: apr 2011 |
||
4 | # descr : filefind |
||
5 | # This is a demo of programming in the java language. |
||
6 | # Its part of a project to implement a program to create a directory |
||
7 | # tree similar to the output of the Unix find program. |
||
8 | # EUID : Any user who has read access to all the files being searched for. |
||
9 | # run : interactive |
||
10 | # |
||
11 | # Changes |
||
12 | # name : date: |
||
13 | # descr : short description |
||
14 | # |
||
15 | # ========================================================================== */ |
||
16 | |||
17 | import java.io.*; |
||
18 | import java.util.*; |
||
19 | |||
20 | public class filefind /*implements Runnable */ |
||
21 | { |
||
22 | protected File base; |
||
23 | protected PrintStream out; |
||
24 | |||
25 | static void Usage(String progname, String mesg) |
||
26 | { |
||
27 | System.out.println("Usage: " + progname + " directory"); |
||
28 | System.out.println(mesg); |
||
29 | } |
||
30 | |||
31 | static boolean issymlink(File file1) |
||
32 | { |
||
33 | boolean result; |
||
34 | try |
||
35 | { |
||
36 | result = !file1.getAbsolutePath().equals(file1.getCanonicalPath()); |
||
37 | } |
||
38 | catch (IOException ie) |
||
39 | { |
||
40 | System.err.println("Caught IOException: " + ie.getMessage()); |
||
41 | result = false; |
||
42 | } |
||
43 | return result; |
||
44 | } |
||
45 | /** |
||
46 | * Create a filefind object for the given string, with |
||
47 | * a print indentation given. |
||
48 | */ |
||
49 | public filefind(String filename) |
||
50 | { |
||
51 | base = new File(filename); |
||
52 | } |
||
53 | |||
54 | public void start_traverse(String directory) |
||
55 | { |
||
56 | System.out.println(directory); |
||
57 | traverse(base); |
||
58 | } |
||
59 | |||
60 | static void traverse(File b) |
||
61 | { |
||
62 | String curdir; |
||
63 | curdir = b.getAbsolutePath(); |
||
64 | System.setProperty("user.dir",curdir); |
||
65 | |||
66 | File [] subs = b.listFiles(); |
||
67 | for(int i = 0; i < subs.length; i++) |
||
68 | { |
||
69 | //File f2 = new File(subs[i]); |
||
70 | if (subs[i].isDirectory() && !issymlink(subs[i])) |
||
71 | { |
||
72 | System.out.println(subs[i]); |
||
73 | traverse(subs[i]); |
||
74 | } |
||
75 | else |
||
76 | { |
||
77 | System.out.println(subs[i]); |
||
78 | } |
||
79 | } |
||
80 | System.setProperty("user.dir",curdir); |
||
81 | } |
||
82 | |||
83 | /* ============================================================================ |
||
84 | # MAIN |
||
85 | # ========================================================================== */ |
||
86 | |||
87 | public static void main(String [] args) |
||
88 | { |
||
89 | String basename; |
||
90 | String progname = "filefind"; |
||
91 | if (args.length == 1) |
||
92 | { |
||
93 | basename = args[0]; |
||
94 | File base = new File(basename); |
||
95 | if (base.isDirectory()) |
||
96 | { |
||
97 | filefind walker = new filefind(basename); |
||
98 | //walker.setOutput(System.out); |
||
99 | walker.start_traverse(basename); |
||
100 | } |
||
101 | else |
||
102 | { |
||
103 | Usage(progname, "ERROR: No directory " + basename + " found"); |
||
104 | } |
||
105 | } |
||
106 | else |
||
107 | Usage(progname, "ERROR: 1 argument expected"); |
||
108 | } |
||
109 | } |