Subversion Repositories svn.Prod repos

Rev

Rev 43 | 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
  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.         public filefind(String filename)
  47.         {
  48.                 base = new File(filename);
  49.         }
  50.  
  51.         static void start_traverse(File base)
  52.         {
  53.                 try
  54.                 {
  55.                         System.out.println(base.getCanonicalPath());
  56.                 }
  57.                 catch (IOException ie)
  58.                 {
  59.                         System.err.println("Caught IOException: " + ie.getMessage());
  60.                 }
  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.                         {
  95.                                 start_traverse(base);
  96.                         }
  97.                         else
  98.                         {
  99.                                 Usage(progname, "ERROR: Not a directory : " + basename);
  100.                         }
  101.                 }
  102.                 else
  103.                 Usage(progname, "ERROR: 1 argument expected");
  104.         }
  105. }
  106.