Javaプログラミング学習サイト ゆるゆるプログラミング

2016/11/23 公開

・ファイルのリストを取得

指定したパスに格納されているディレクトリ名とファイル名配列に格納し、その配列コンソール出力するプログラムを紹介します。

パスに格納されているファイルに対して処理をおこなったり、数をかぞえたりするに使用することができます。

以下がJavaソースコードです。

FileList.java ← クリックしてダウンロードページに移動
001:    import java.io.File;
002:    
003:    public class FileList {
004:    	public static void main( String[] args ) {
005:    		String path;	// 検索パス
006:    
007:    		// 入力した引数が1つ以上かを調べる
008:    		if ( 1 > args.length ) {
009:    			// 入力した引数が1つ未満の場合、使用方法を表示する
010:    			System.out.println(
011:    				 "FileList [検索パス]" );
012:    			return;
013:    		}
014:    
015:    		// パラメータを検索パスに代入
016:    		path  = args[ 0 ];
017:    
018:    		// パスを指定
019:    		File dir = new File( path );
020:                
021:    		//フルパスで取得
022:    		File[] files1 = dir.listFiles();
023:    		if ( null == files1 ) {
024:    			// ファイルリストの取得に失敗
025:    			System.out.println( "ファイルリストの取得に失敗しました!("
026:    							 + path + ")" );
027:    			return;
028:    		}
029:    
030:    		// ファイルリストの表示
031:    		for ( int i = 0; i < files1.length; i ++ ) {
032:    			File file = files1[ i ];
033:    			// ファイル名か判定
034:    			if ( file.isFile() ) {
035:    				// ファイル名を表示
036:    				System.out.println( "ファイル名 : " + file );
037:    			}
038:    			else {
039:    				// ディレクトリ名か判定
040:    				if ( file.isDirectory() ) {
041:    					//ディレクトリ名を表示
042:    					System.out.println( "ディレクトリ名 : " + file );
043:    				}
044:    			}
045:    		}
046:    	}
047:    }

FileListを実行

C:\talavax\javasample>java FileList c:\samplepath

・指定したパス

指定したパス

出力結果

ディレクトリ名 : C:\samplepath\dir1
ディレクトリ名 : C:\samplepath\dir2
ファイル名 : C:\samplepath\sample.csv
ファイル名 : C:\samplepath\sample1.txt
ファイル名 : C:\samplepath\sample2.txt
ファイル名 : C:\samplepath\sample3.txt

ここからは、このJavaソースコードを上から順番に解説していきます。

001:    import java.io.File;

Javaクラスライブラリの中から「java.io.File」というパッケージにあるクラスを、このプログラム内で使うために記述します。 この記述により、Fileクラスが利用できるようになります。

003:    public class FileList {

クラス名を、FileListとしています。

004:    	public static void main( String[] args ) {

このmainメソッドからプログラムを実行します。

005:    		String path;	// 検索パス

このプログラムで使う変数を宣言しています。

007:    		// 入力した引数が1つ以上かを調べる
008:    		if ( 1 > args.length ) {
009:    			// 入力した引数が1つ未満の場合、使用方法を表示する
010:    			System.out.println(
011:    				 "FileList [検索パス]" );
012:    			return;
013:    		}

1つ以上の引数が与えられたかをチェックし、1つ未満の場合に、使い方のメッセージを表示し、returnによってmainメソッドを抜けています。

015:    		// パラメータを検索パスに代入
016:    		path  = args[ 0 ];

与えられた引数を検索バスの変数pathに代入していいます。

018:    		// パスを指定
019:    		File dir = new File( path );

検索パス名でFileクラスを構築しています。

021:    		//フルパスで取得
022:    		File[] files1 = dir.listFiles();
023:    		if ( null == files1 ) {
024:    			// ファイルリストの取得に失敗
025:    			System.out.println( "ファイルリストの取得に失敗しました!("
026:    							 + path + ")" );
027:    			return;
028:    		}

ファイルリストをフルパスで取得しています。戻り値nullの場合、エラーメッセージを表示してプログラムを終了します。

File.listFilesメソッド

public File[] listFiles()
■指定ディレクトリ内のパス名の配列を返します。

  パラメータ なし

  戻り値     この抽象パス名が示すディレクトリ内のファイルを示す抽象パス名の配列を返します。
               この抽象パス名がディレクトリを示さない場合、このメソッドはnullを返します。

030:    		// ファイルリストの表示
031:    		for ( int i = 0; i < files1.length; i ++ ) {
032:    			File file = files1[ i ];

取得したリスト数だけfor文で繰り返し実行します。

033:    			// ファイル名か判定
034:    			if ( file.isFile() ) {
035:    				// ファイル名を表示
036:    				System.out.println( "ファイル名 : " + file );
037:    			}

fileがファイル名かどうかを判定し、ファイル名であればprintlnメソッドコンソール出力します。

File.isFileメソッド

public boolean isFile()
■普通のファイルかどうかを判定

  パラメータ なし

  戻り値     この抽象パス名が示すファイルが普通のファイルかどうかを判定します。

039:    				// ディレクトリ名か判定
040:    				if ( file.isDirectory() ) {
041:    					//ディレクトリ名を表示
042:    					System.out.println( "ディレクトリ名 : " + file );
043:    				}

fileがフォルダ名かどうかを判定し、フォルダ名であればprintlnメソッドコンソール出力します。

File.isDirectoryメソッド

public boolean isDirectory()
■ディレクトリかどうかを判定

  パラメータ なし

  戻り値     この抽象パス名が示すファイルがディレクトリであるかどうかを判定します。

以上です。

■関連コンテンツ

ファイル ファイルの形式の解説
ファイル名 ファイル名について解説
ファイルの有無を判定 ファイルの有無の判定について解説
ファイルサイズの取得 ファイルサイズ(容量)を取得
値のコンソール表示 print()、println()とは?

■新着情報

2022.07.07 外部プログラムの実行 exeファイル実行
2022.07.06 完全数 6=1+2+3

■広告

 

 

 

 

 

スッキリわかるJava入門第3版 [ 中山清喬 ]

価格:2,860円
(2021/6/18 14:32時点)
感想(6件)

 

 

 

 

Topへ