技術空間

Java

ディレクトリ配下のファイルを全て出力する


TOP > Java > ディレクトリ配下のファイルを全て出力する



■ディレクトリ配下のファイルを全て出力する

あるディレクトリ配下に存在するファイルをすべて出力したい場合、以下のようなコードとなる。 ディレクトリ配下のサブディレクトリも階層的にすべて検索して出力する。

以下の「root」ディレクトリを対象に階層的に検索してファイル名を出力する。

ディレクトリ階層
C:.
│  Sample.class
│  Sample.java
│
└─root
    │  file1.txt
    │
    ├─sub1
    │  │  file2.txt
    │  │
    │  └─sub3
    │          file4.txt
    │
    └─sub2
            file3.txt
コード
import java.io.*;

public class Sample{
    
    public static void main(String[] args){
        dumpFile(new File("root"));
    }
    
    /** ファイル出力 */
    private static void dumpFile(File file){
        
        // ファイル一覧取得
        File[] files = file.listFiles();
        
        if(files == null){
            return;
        }

        for (File tmpFile : files) {
            
            // ディレクトリの場合
            if(tmpFile.isDirectory()){
                
                // 再帰呼び出し
                dumpFile(tmpFile);
                
            // ファイルの場合
            }else{
                System.out.println(tmpFile.getName());
            }
        }
    }
}
出力結果
file1.txt
file2.txt
file4.txt
file3.txt

次にフォルダ名も含めて、階層的に出力してみる。階層が変わるときにインデントを付けている。

コード
import java.io.*;

public class Sample{
    
    public static void main(String[] args){
        // 最初は階層を0で指定
        dumpFile(new File("root"), 0);
    }
    
    /** ファイル出力(階層版) */
    private static void dumpFile(File file, int level){
        
        // ファイル一覧取得
        File[] files = file.listFiles();
        
        if(files == null){
            return;
        }
        
        // インデント用の空白作成
        StringBuilder sb = new StringBuilder();
        for(int i = 0; i < level; i++){
            sb.append("  ");
        }
        String indent = sb.toString();
        
        System.out.println(indent + "/" + file.getName());
        
        for (File tmpFile : files) {
            
            // ディレクトリの場合
            if(tmpFile.isDirectory()){
                
                // 再帰呼び出し
                dumpFile(tmpFile, level + 1);
                
            // ファイルの場合
            }else{
                System.out.println(indent + "  " + tmpFile.getName());
            }
        }
    }
}
出力結果
/root
  file1.txt
  /sub1
    file2.txt
    /sub3
      file4.txt
  /sub2
    file3.txt


TOP > Java > ディレクトリ配下のファイルを全て出力する

Tweet ̃Gg[͂ĂȃubN}[Nɒlj
技術空間