DirViewer.java



import java.awt.Color;
import java.awt.Frame;
import java.awt.FlowLayout;
import java.io.File;
import java.io.IOException;

/** ディレクトリ内のファイルを一覧表示する DirViewerクラス */

public class DirViewer extends Frame {

   /** 使用するレイアウトのオブジェクト */

       protected FlowLayout lay;

   /** ディレクトリのオブジェクト */

       public File dir;

   /** ディレクトリ内のファイル・オブジェクト */

       public File files[];

   /** ファイルに対応するアイコンのオブジェクト */

       public FileIcon icons[];

   /** コンストラクタ */

       DirViewer( File dir ) {

          // ディレクトリの絶対パス名をタイトルにしてフレームを生成

             super( dir.getAbsolutePath() );

             lay = new FlowLayout();
             setLayout( lay );
             setForeground( Color.black );
             setBackground( Color.white );
             setSize( 640, 400 );

             this.dir = dir;
             try{
                 String names[] = dir.list();
                 files = new File[ names.length ];
                 icons = new FileIcon[ names.length ];

                 for( int i=0; i<names.length; i++ ) {

                      files[i] = new File( dir.getName() 
                                     + File.separatorChar + names[i] );
                      icons[i] = new FileIcon( files[i] );
                      add( icons[i] );
                 }
             }
             catch( NullPointerException e ) {

                   System.err.println( "File name string is null");
                   System.exit(0);
             }

             show();  // 表示
       }

   /** 最初に呼び出されるメソッド */

       public static void main( String argv[] ) {

              String dirName;  // ディレクトリ名を指定

              if( argv.length >= 1 ) {

                  dirName = argv[0];
              }
              else {

                  dirName = ".";  // デフォルトはカレントディレクトリ
              }

           // 自分自身のオブジェクトを生成して処理を開始

              try {
                   File dir = new File( dirName ); // この dir はローカル変数
                   if( dir.isDirectory() ) {
                       DirViewer dv = new DirViewer( dir );
                   }
                   else {
                        System.err.println( dirName + " is not directory");
                        System.exit(0);
                   }
              }
              catch( NullPointerException e ) {

                   System.err.println( "Directory name string is null");
                   System.exit(0);
              }
       }
}