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 | } |