Java フォルダ/ファイルの一覧を取得(NIO.2のFiles)

JavaのNIO.2のFilesクラスのメソッドでフォルダ/ファイルの一覧を取得するサンプルです。

目次

サンプル フォルダとファイルの一覧を取得する
  フォルダ配下+サブフォルダ配下のファイル一覧を取得
NIO.2のFilesクラスのメソッドを使用
  Path.getとは

フォルダとファイルの一覧を取得する

public static Stream<Path> list(Path dir) throws IOException

フォルダとファイルの一覧を取得するサンプルです。

package test1;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.function.Consumer;

public class Test1 {
	public static void main(String[] args) {

		Path path1 = Paths.get("D:\\Test1");

		try {
			Files.list(path1).forEach(new Consumer<Path>() {
				@Override
				public void accept(Path a) {
					if (Files.isDirectory(a)) {
						System.out.println("フォルダ:" + a);
					} else {
						System.out.println("ファイル:" + a);
					}
				}
			});
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

14行目は、Filesクラスのlistメソッドでフォルダとファイルの一覧を取得しています。
サブフォルダ配下は検索しません。
15行目は、関数型インターフェースのConsumerインターフェースです。
引数はPathオブジェクトで戻り値はありません。
17行目は、isDirectoryメソッドでフォルダか確認しています。

フォルダ配下+サブフォルダ配下のファイル一覧を取得

フォルダ配下+サブフォルダ配下のファイル一覧を取得するサンプルです。
再帰的に処理します。

package test1;

import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;

public class Test1 {
    public static void main(String[] args) {
        
        String dir = "D:\\Test1";
        
        Path p1 = Paths.get(dir);

        try {
            Files.walkFileTree(p1, new SimpleFileVisitor<Path>() {
                @Override
                public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
                    throws IOException
                {
                    System.out.println(file);
                    return FileVisitResult.CONTINUE;
                }
            });
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

19行目は、FilesクラスのwalkFileTreeメソッドでファイルツリーを参照します。
21行目は、SimpleFileVisitorクラスのvisitFileメソッドでフォルダ内のファイルを呼び出します。
25行目は、CONTINUEで処理を継続します。

walkFileTreeメソッド

public static Path walkFileTree(Path start,FileVisitor<? super Path> visitor)
throws IOException

visitFileメソッド

public FileVisitResult visitFile(T file,BasicFileAttributes attrs)
throws IOException

NIO.2のFilesクラスのメソッドを使用

上記サンプルコードのメソッドは、Java7で導入されたjava.nio.file.Filesクラスのメソッドです。NIO.2とも呼ばれます。
似た名前でFileクラス(java.io.File)がありますがそれとは別です。

 

メソッドの引数に指定するPathオブジェクト

1 public static Path get(URI uri)
2 public static Path get(String first,String... more)

Path.getは引数にパスまたはパスとファイル名を指定してPathオブジェクトを生成します。
Filesクラスのメソッドの引数になります。

関連の記事

Java テキストファイルの読み書き(NIO.2のFiles)
Java ファイルの存在/移動/コピー/削除(NIO.2のFiles)
Java フォルダの存在/移動/コピー/削除(NIO.2のFiles)

△上に戻る