Example: Using the IFS classes to list the contents of a directory

Note: Read the Code example disclaimer for important legal information.

//////////////////////////////////////////////////////////////////////////////////
//
// IFSListFile example.  This program uses the integrated file system classes
// to list the contents of a directory on the server.
//
// Command syntax:
//    IFSList system directory
//
// For example,
//    IFSList MySystem /path1
//
//////////////////////////////////////////////////////////////////////////////////

import java.io.*;
import java.util.*;
import com.ibm.as400.access.*;

public class IFSList extends Object
{
   public static void main(String[] parameters)
   {
      System.out.println( " " );

      String directoryName = "";
      String system        = "";


      // if both parameters were not specified, display help text and exit.

      if (parameters.length >= 2)
      {

         // Assume the first parameter is the system name and
         // the second parameter is the directory name

         system = parameters[0];
         directoryName = parameters[1];

         try
         {
            // Create an AS400 object for the server that holds the files.

            AS400 as400 = new AS400(system);



            // Create the IFSFile object for the directory.

            IFSFile directory = new IFSFile(as400, directoryName);



            // Generate the list of name.  Pass the list method the
            // directory filter object and the search match criteria.
            //
            // Note - this example does the processing in the filter
            // object.  An alternative is to process the list after
            // it is returned from the list method call.

            String[] directoryNames = directory.list(new MyDirectoryFilter(),"*");



            // Tell the user if the directory doesn't exist or is empty

            if (directoryNames == null)
               System.out.println("The directory does not exist");

            else if (directoryNames.length == 0)
               System.out.println("The directory is empty");
         }

         catch (Exception e)
         {
            // If any of the above operations failed say the list failed
            // and output the exception.

            System.out.println("List failed");
            System.out.println(e);
         }
      }

      // Display help text when parameters are incorrect.

      else
      {
         System.out.println("");
         System.out.println("");
         System.out.println("");
         System.out.println("Parameters are not correct.  Command syntax is:");
         System.out.println("");
         System.out.println("   IFSList as400 directory");
         System.out.println("");
         System.out.println("Where");
         System.out.println("");
         System.out.println("   as400 = system that contains the files");
         System.out.println("   directory = directory to be listed");
         System.out.println("");
         System.out.println("For example:");
         System.out.println("");
         System.out.println("   IFSCopyFile mySystem /dir1/dir2");
         System.out.println("");
         System.out.println("");
      }

      System.exit(0);
   }
}


////////////////////////////////////////////////////////////////////////////
//
// The directory filter class prints information from the file object.
//
// Another way to use the filter is to simply return true or false
// based on information in the file object.  This lets the mainline
// function decide what to do with the list of files that meet the
// search criteria.
//
////////////////////////////////////////////////////////////////////////////



class MyDirectoryFilter implements IFSFileFilter
{
   public boolean accept(IFSFile file)
   {
      try
      {
         // Print the name of the current file

         System.out.print(file.getName());



         // Pad the output so the columns line up

         for (int i = file.getName().length(); i < 18; i++)
            System.out.print(" ");



         // Print the date the file was last changed.

         long changeDate = file.lastModified();
         Date d = new Date(changeDate);
         System.out.print(d);
         System.out.print("  ");



         // Print if the entry is a file or directory

         System.out.print("   ");

         if (file.isDirectory())
            System.out.println("<DIR>");
         else
            System.out.println(file.length());



         // Keep this entry.  Returning true tells the IFSList object
         // to return this file in the list of entries returned to the
         // .list() method.

         return true;
      }

      catch (Exception e)
      {
         return false;
      }
   }
}