Sample11_02 の仕様
//Sample11_02.java import java.io.File; class Sample11_02{ //クラス変数 static final int MAX_SIZE = 30; // (1) とりあえず 30こ static File[] result = null; // (2) 結果入力用の配列 static int i = 0; // (3) result カウンタ変数 public static void main(String[] args){ //初期化 String strDir = "parent"; // (4) 検査対象の抽象パス名 result = new File[MAX_SIZE]; // (5) 配列の初期化 //再帰メソッドの呼び出し File dir = new File(strDir); if(dir.exists()){ addList(dir); } //結果表示 int j=0; for(; j < result.length; j++){ // ...(6) File file = result[j]; if(file!=null){ String strPath = String.format("%02d %s", j, file.getPath());// ...(7) System.out.println(strPath); }else{ break; } } System.out.println("Hit: " + j); } //再帰メソッド private static void addList(File dir){ result[i]= dir; // ...(a) i++; // ...(b) if(dir.isDirectory()){ //再帰or終了 の分岐1 File[] files = dir.listFiles();// ...(c) if(files!=null){ //再帰or終了 の分岐2 for(File file : files){ addList(file);//再帰呼出し ...(f) } }else{ //終了 ...(e) } }else{ //終了 ...(d) } } }
クラス変数
初期化
再帰メソッドの呼び出し
strDirが実在すれば、addListメソッドを実行します。addListメソッド内の処理
結果表示
以下は、resultの表示の為のソースコードです。
ws
|----Sample11_02.java
└----parent
|----child01
| |----child01_1
| | |----fileA.txt
| | |----fileB.txt
| | └----fileC.txt
| |
| |----file01_1.txt
| |----file01_2.txt
| └----file01_3.txt
|
|----child02
| |----child02_01
| | |----fileX.txt
| | |----fileY.txt
| | └----fileZ.txt
| |
| └----file02.txt
|
|----child03
| |----file997.txt
| |----file998.txt
| └----file999.txt
|
|----child04
|----file01.txt
└----file02.txt
>cd ws ws>javac -encoding UTF-8 Sample11_02.java ws>java Sample11_02 00 parent 01 parent/child01 02 parent/child01/child01_1 03 parent/child01/child01_1/fileA.txt 04 parent/child01/child01_1/fileB.txt 05 parent/child01/child01_1/fileC.txt 06 parent/child01/file01_1.txt 07 parent/child01/file01_2.txt 08 parent/child01/file01_3.txt 09 parent/child02 10 parent/child02/child02_01 11 parent/child02/child02_01/fileX.txt 12 parent/child02/child02_01/fileY.txt 13 parent/child02/child02_01/fileZ.txt 14 parent/child02/file02.txt 15 parent/child03 16 parent/child03/file997.txt 17 parent/child03/file998.txt 18 parent/child03/file999.txt 19 parent/child04 20 parent/file01.txt 21 parent/file02.txt ws>