Java フォルダ/ファイルの一覧を取得(Filesクラス)

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

目次

サンプル フォルダとファイルの一覧を取得する(list)
  フォルダ配下+サブフォルダ配下のファイル一覧を取得(walkFileTree)
FilesクラスとPath.getとは

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

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

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

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メソッドでフォルダか確認しています。

 

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

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

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

 

FilesクラスとPath.getとは

Filesクラスとは

Filesクラスは、Java7で導入されました。

java.nio.file.FilesクラスでNIO.2とも呼ばれます(Oracleが呼んでいます)。

似た名前でFileクラス(java.io.File)がありますがそれとは別です。

https://docs.oracle.com/javase/tutorial/essential/io/fileio.html

 

Path.getとは

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

Path.getの引数は、ファイルのある場所(パス)とファイル名を指定します。

1の引数は、フォルダとファイルの1つになっています。
2の引数は、フォルダとファイルで分かれています。

1と2のどちらでも可です。

Path.getの戻り値は、Filesクラスのメソッドの引数になります。

関連の記事

Java ファイルの存在/移動/コピー/削除(Filesクラス)
Java フォルダの存在/移動/コピー/削除(Filesクラス)

△上に戻る