Rev 43 | Details | Compare with Previous | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line | 
|---|---|---|---|
| 6 | ls | 1 | /* ============================================================================ | 
        
| 2 | # Create | 
        ||
| 43 | - | 3 | # name  : Andre Rikkert de Koe          date:   Apr 2011 | 
        
| 6 | ls | 4 | # descr : filefind | 
        
| 44 | - | 5 | #         This is a demo of programming in the Java language. | 
        
| 6 | ls | 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 | |||
| 10 | ls | 20 | public class filefind  | 
        
| 6 | ls | 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 |         } | 
        ||
| 10 | ls | 45 | |
| 6 | ls | 46 | public filefind(String filename)  | 
        
| 47 |         { | 
        ||
| 48 | base = new File(filename);  | 
        ||
| 49 |         } | 
        ||
| 50 | |||
| 11 | ls | 51 | static void start_traverse(File base)  | 
        
| 6 | ls | 52 |         { | 
        
| 11 | ls | 53 |                 try | 
        
| 54 |                 { | 
        ||
| 55 | System.out.println(base.getCanonicalPath());  | 
        ||
| 56 |                 } | 
        ||
| 57 | catch (IOException ie)  | 
        ||
| 58 |                 { | 
        ||
| 59 | System.err.println("Caught IOException: " + ie.getMessage());  | 
        ||
| 60 |                 } | 
        ||
| 6 | ls | 61 | traverse(base);  | 
        
| 62 |         } | 
        ||
| 63 | |||
| 64 | static void traverse(File b)  | 
        ||
| 65 |         { | 
        ||
| 66 | File [] subs = b.listFiles();  | 
        ||
| 67 | for(int i = 0; i < subs.length; i++)  | 
        ||
| 68 |                 { | 
        ||
| 69 | if (subs[i].isDirectory() && !issymlink(subs[i]))  | 
        ||
| 70 |                         { | 
        ||
| 71 | System.out.println(subs[i]);  | 
        ||
| 72 | traverse(subs[i]);  | 
        ||
| 73 |                         } | 
        ||
| 74 |                         else | 
        ||
| 75 |                         { | 
        ||
| 76 | System.out.println(subs[i]);  | 
        ||
| 77 |                         } | 
        ||
| 78 |                 } | 
        ||
| 79 |         } | 
        ||
| 80 | |||
| 81 | /* ============================================================================ | 
        ||
| 82 | # MAIN | 
        ||
| 83 | # ========================================================================== */ | 
        ||
| 84 | |||
| 85 | public static void main(String [] args)  | 
        ||
| 86 |         { | 
        ||
| 87 | String basename;  | 
        ||
| 88 | String progname = "filefind";  | 
        ||
| 89 | if (args.length == 1)  | 
        ||
| 90 |                 { | 
        ||
| 91 | basename = args[0];  | 
        ||
| 92 | File base = new File(basename);  | 
        ||
| 93 | if (base.isDirectory())  | 
        ||
| 94 |                         { | 
        ||
| 11 | ls | 95 | start_traverse(base);  | 
        
| 6 | ls | 96 |                         } | 
        
| 97 |                         else | 
        ||
| 98 |                         { | 
        ||
| 37 | - | 99 | Usage(progname, "ERROR: Not a directory : " + basename);  | 
        
| 6 | ls | 100 |                         } | 
        
| 101 |                 } | 
        ||
| 102 |                 else | 
        ||
| 103 | Usage(progname, "ERROR: 1 argument expected");  | 
        ||
| 104 |         } | 
        ||
| 105 | } |