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