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

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

目次

サンプル フォルダとファイルの一覧を取得する
  フォルダ配下+サブフォルダ配下のファイル一覧を取得
参考 NIO.2のFilesクラス
  メソッドの引数に指定するPathオブジェクト

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

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クラス

public final class Files extends Object
  • ファイルを操作するクラスです。
  • Java7で導入された、java.nio.file.Filesクラスです。NIO.2の機能のひとつです。
  • 似た名前でFileクラス(java.io.File)がありますがそれとは別です。
  • 以下はJava8 API仕様のFilesクラスのリンクです。
    https://docs.oracle.com/javase/jp/8/docs/api/java/nio/file/Files.html

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

1 public static Path get(URI uri)
2 public static Path get(String first,String... more)
  • PathオブジェクトはFilesクラスのメソッドの引数に指定します。
  • PathオブジェクトはPathクラスのgetメソッドで取得します。
  • 1は、引数にパスをセットします。
  • 2は、引数にパスとファイル名をセットします。
  • 以下はJava8 API仕様のPathsクラスのリンクです。
    https://docs.oracle.com/javase/jp/8/docs/api/java/nio/file/Paths.html

関連の記事

△上に戻る