Java でフォルダの全ファイルを読み込む方法
Mohammad Irfan
2023年10月12日
- Java でフォルダのすべてのファイルを読み込む方法
-
Java で
Files
クラスを用いてフォルダの全ファイルを読み込む -
Java の
newDirectoryStream()
メソッドを用いてフォルダからすべてのファイルを読み込む -
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 JAR ファイルの作成と実行
- Java で 2つのファイルの内容を比較する
- Java でファイル サイズを取得する
- Java でファイルからバイトを読み取る