Skip to content

Commit 9a567f9

Browse files
PranayVJainjzheaux
authored andcommitted
List files within directory
Issue: BAEL-2447
1 parent 6a2dc09 commit 9a567f9

File tree

6 files changed

+114
-0
lines changed

6 files changed

+114
-0
lines changed
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package com.baeldung.files;
2+
3+
import java.io.File;
4+
import java.io.IOException;
5+
import java.nio.file.DirectoryStream;
6+
import java.nio.file.FileVisitResult;
7+
import java.nio.file.Files;
8+
import java.nio.file.Path;
9+
import java.nio.file.Paths;
10+
import java.nio.file.SimpleFileVisitor;
11+
import java.nio.file.attribute.BasicFileAttributes;
12+
import java.util.HashSet;
13+
import java.util.Set;
14+
import java.util.stream.Collectors;
15+
import java.util.stream.Stream;
16+
17+
public class ListFiles {
18+
public static final int DEPTH = 1;
19+
20+
public Set<String> listFilesUsingJavaIO(String dir) {
21+
return Stream.of(new File(dir).listFiles())
22+
.filter(file -> !file.isDirectory())
23+
.map(File::getName)
24+
.collect(Collectors.toSet());
25+
}
26+
27+
public Set<String> listFilesUsingFileWalk(String dir, int depth) throws IOException {
28+
try (Stream<Path> stream = Files.walk(Paths.get(dir), depth)) {
29+
return stream.filter(file -> !Files.isDirectory(file))
30+
.map(Path::getFileName)
31+
.map(Path::toString)
32+
.collect(Collectors.toSet());
33+
}
34+
}
35+
36+
public Set<String> listFilesUsingFileWalkAndVisitor(String dir) throws IOException {
37+
Set<String> fileList = new HashSet<>();
38+
Files.walkFileTree(Paths.get(dir), new SimpleFileVisitor<Path>() {
39+
@Override
40+
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
41+
if (!Files.isDirectory(file)) {
42+
fileList.add(file.getFileName()
43+
.toString());
44+
}
45+
return FileVisitResult.CONTINUE;
46+
}
47+
});
48+
return fileList;
49+
}
50+
51+
public Set<String> listFilesUsingDirectoryStream(String dir) throws IOException {
52+
Set<String> fileList = new HashSet<>();
53+
try (DirectoryStream<Path> stream = Files.newDirectoryStream(Paths.get(dir))) {
54+
for (Path path : stream) {
55+
if (!Files.isDirectory(path)) {
56+
fileList.add(path.getFileName()
57+
.toString());
58+
}
59+
}
60+
}
61+
return fileList;
62+
}
63+
64+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package com.baeldung.file;
2+
3+
import static org.junit.Assert.assertEquals;
4+
5+
import java.io.IOException;
6+
import java.util.HashSet;
7+
import java.util.Set;
8+
9+
import org.junit.Test;
10+
11+
import com.baeldung.files.ListFiles;
12+
13+
public class ListFilesUnitTest {
14+
15+
private ListFiles listFiles = new ListFiles();
16+
private String DIRECTORY = "src/test/resources/listFilesUnitTestFolder";
17+
private static final int DEPTH = 1;
18+
private Set<String> EXPECTED_FILE_LIST = new HashSet<String>() {
19+
{
20+
add("test.xml");
21+
add("employee.json");
22+
add("students.json");
23+
add("country.txt");
24+
}
25+
};
26+
27+
@Test
28+
public void givenDir_whenUsingJAVAIO_thenListAllFiles() throws IOException {
29+
assertEquals(EXPECTED_FILE_LIST, listFiles.listFilesUsingJavaIO(DIRECTORY));
30+
}
31+
32+
@Test
33+
public void givenDir_whenWalkingTree_thenListAllFiles() throws IOException {
34+
assertEquals(EXPECTED_FILE_LIST, listFiles.listFilesUsingFileWalk(DIRECTORY,DEPTH));
35+
}
36+
37+
@Test
38+
public void givenDir_whenWalkingTreeWithVisitor_thenListAllFiles() throws IOException {
39+
assertEquals(EXPECTED_FILE_LIST, listFiles.listFilesUsingFileWalkAndVisitor(DIRECTORY));
40+
}
41+
42+
@Test
43+
public void givenDir_whenUsingDirectoryStream_thenListAllFiles() throws IOException {
44+
assertEquals(EXPECTED_FILE_LIST, listFiles.listFilesUsingDirectoryStream(DIRECTORY));
45+
}
46+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
This is a sample txt file for unit test ListFilesUnitTest
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<xml></xml>

0 commit comments

Comments
 (0)