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 |
- FilesクラスのwalkFileTreeメソッドは、ファイルツリーを参照します。
- 以下は、Java8 API仕様のFilesクラスのwalkFileTreeメソッドのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/nio/file/Files.html#walkFileTree-java.nio.file.Path-java.nio.file.FileVisitor-
visitFileメソッド
public FileVisitResult visitFile(T file,BasicFileAttributes attrs) throws IOException |
- SimpleFileVisitorクラスのvisitFileメソッドは、フォルダ内のファイルを呼び出します。
- 以下は、Java8 API仕様のSimpleFileVisitorクラスのvisitFileメソッドのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/nio/file/SimpleFileVisitor.html#visitFile-T-java.nio.file.attribute.BasicFileAttributes-
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クラス)