Java でフォルダの全ファイルを読み込む方法

  1. Java でフォルダのすべてのファイルを読み込む方法
  2. Java で Files クラスを用いてフォルダの全ファイルを読み込む
  3. Java の newDirectoryStream() メソッドを用いてフォルダからすべてのファイルを読み込む
  4. Java の walkFileTree() メソッドを用いたフォルダの全ファイルの読み込み

このチュートリアルでは、Java でフォルダの全ファイルを読み込む方法と、それを理解するためのコード例を紹介します。

フォルダのすべてのファイルを取得する方法はいくつかあります。ここでは、File, Files, DirectoryStream などのクラスを使うことができます。例を見てみよう。

Java でフォルダのすべてのファイルを読み込む方法

ここでは、File クラスを用いてソースディレクトリ内のすべてのファイルとフォルダを収集し、isDirectory() メソッドを用いてそれがファイルかフォルダかをチェックします。以下の例を参照してください。

import java.io.File;
import java.text.ParseException;
public class SimpleTesting {

	public static void findAllFilesInFolder(File folder) {
		for (File file : folder.listFiles()) {
			if (!file.isDirectory()) {
				System.out.println(file.getName());
			} else {
				findAllFilesInFolder(file);
			}
		}
	}
	public static void main(String[] args) throws ParseException {
		File folder = new File("/home/folder/src");
		findAllFilesInFolder(folder);
	}
}

Java で Files クラスを用いてフォルダの全ファイルを読み込む

ストリームを利用したい場合は、Files クラスの walk() メソッドを用いて Path' ストリーム を返す。その後、filter() メソッドを用いてファイルのみを収集し、forEach() を用いてファイルを出力します。

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.stream.Stream;
public class SimpleTesting {

	public static void main(String[] args) throws IOException {
		try (Stream<Path> paths = Files.walk(Paths.get("/home/folder/src"))) {
			paths
			.filter(Files::isRegularFile)
			.forEach(System.out::println);
		} 
	}
}

Java の newDirectoryStream() メソッドを用いてフォルダからすべてのファイルを読み込む

ここでは、Files クラスとその newDirectoryStream() メソッドを用いて Path のストリームを返す。その後、for-each ループを使ってファイルのリストを反復処理し、ファイル名を表示する。

import java.io.IOException;
import java.nio.file.DirectoryIteratorException;
import java.nio.file.DirectoryStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class SimpleTesting {

	public static void main(String[] args) throws IOException {
		try (DirectoryStream<Path> stream = Files.newDirectoryStream(Paths.get("/home/folder/src/"))) {
		    for (Path file: stream) {
		        System.out.println(file.getFileName());
		    }
		} catch (IOException | DirectoryIteratorException ex) {
		    System.err.println(ex);
		}
	}
}

Java の walkFileTree() メソッドを用いたフォルダの全ファイルの読み込み

ここでは、ソースフォルダと SimpleFileVisitor 参照の 2つの引数を受け取る Files クラスの walkFileTree() メソッドを使用します。以下の例を参照してください。

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 SimpleTesting {

	public static void main(String[] args) throws IOException {
		SimpleFileVisitor<Path> file = new SimpleFileVisitor<Path>() {
				@Override
				public FileVisitResult visitFile(Path filePath, BasicFileAttributes attrs) throws IOException {
					System.out.println(filePath);
					return FileVisitResult.CONTINUE;
				}
			};
		Files.walkFileTree(Paths.get("/home/folder/src"), file);
	}
}

関連記事 - Java File

  • Java でファイルを作成してデータを書き込む方法
  • Java で大きなテキストファイルを一行ずつ読み込む方法
  • 関連記事 - Java IO

  • Java で大きなテキストファイルを一行ずつ読み込む方法
  • comments powered by Disqus