Printing File Names Recursively in a Directory
Published on: 19th January 2019
This tutorial describes how to print names of the files in a directory and all of its subdirectories.
Problem Statement
Print all the file names recrusively in a given directory.
Assumptions:
- Files can be printed in any order.
- Multi-threading needs to be utilized to make program faster on multi-core machines.
Solution
This problem can be easily solved using recursion as we can simply create a method to print file names in a directory and then call itself for every sibdirectory.
However since we need to use multi-threading, we will use ForkJoinPool executor service of Java.
Finally here is the program for printing file names in a directory recrusively -
package com.aksain.data.structures;
import java.io.File;
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.RecursiveAction;
import java.util.concurrent.TimeUnit;
public class PrintingFilesRecursivelyInDirectory {
private static class FilesPrinter extends RecursiveAction {
private static final long serialVersionUID = 1L;
private File directory;
public FilesPrinter(File directory) {
this.directory = directory;
}
@Override
protected void compute() {
for(File file : directory.listFiles()) {
if(file.isDirectory()) {
new FilesPrinter(file).fork();
} else {
System.out.println(file.getAbsolutePath());
}
}
}
}
public static void main(String[] args) throws InterruptedException {
final ForkJoinPool forkJoinPool = ForkJoinPool.commonPool();
forkJoinPool.execute(new FilesPrinter(new File("C:\\Tutorials")));
forkJoinPool.awaitTermination(10, TimeUnit.SECONDS);
}
}
Thank you for reading through the tutorial. In case of any feedback/questions/concerns, you can communicate same to us through your comments and we shall get back to you as soon as possible.
Published on: 19th January 2019
Comment Form is loading comments...