Subversion Repositories svn.Prod repos

Rev

Rev 10 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

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