Skip to content

Commit 4472ba7

Browse files
author
azhwani
committed
first commit
1 parent 751c6f7 commit 4472ba7

2 files changed

Lines changed: 133 additions & 0 deletions

File tree

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package com.baeldung.lastmodifiedfile;
2+
3+
import java.io.File;
4+
import java.io.FileFilter;
5+
import java.io.IOException;
6+
import java.nio.file.Files;
7+
import java.nio.file.Path;
8+
import java.nio.file.Paths;
9+
import java.util.Arrays;
10+
import java.util.Optional;
11+
12+
import org.apache.commons.io.comparator.LastModifiedFileComparator;
13+
import org.apache.commons.io.filefilter.FileFilterUtils;
14+
15+
public class LastModifiedFileApp {
16+
17+
public static File findUsingIOApi(String sdir) {
18+
File dir = new File(sdir);
19+
if (dir.isDirectory()) {
20+
Optional<File> opFile = Arrays.stream(dir.listFiles(File::isFile))
21+
.max((f1, f2) -> Long.compare(f1.lastModified(), f2.lastModified()));
22+
23+
if (opFile.isPresent()) {
24+
return opFile.get();
25+
}
26+
}
27+
28+
return null;
29+
}
30+
31+
public static Path findUsingNIOApi(String sdir) throws IOException {
32+
Path dir = Paths.get(sdir);
33+
if (Files.isDirectory(dir)) {
34+
Optional<Path> opPath = Files.list(dir)
35+
.filter(p -> !Files.isDirectory(p))
36+
.sorted((p1, p2) -> Long.valueOf(p2.toFile().lastModified())
37+
.compareTo(p1.toFile().lastModified()))
38+
.findFirst();
39+
40+
if (opPath.isPresent()) {
41+
return opPath.get();
42+
}
43+
}
44+
45+
return null;
46+
}
47+
48+
public static File findUsingCommonsIO(String sdir) {
49+
File dir = new File(sdir);
50+
if (dir.isDirectory()) {
51+
File[] dirFiles = dir.listFiles((FileFilter) FileFilterUtils.fileFileFilter());
52+
if (dirFiles != null && dirFiles.length > 0) {
53+
Arrays.sort(dirFiles, LastModifiedFileComparator.LASTMODIFIED_REVERSE);
54+
return dirFiles[0];
55+
}
56+
}
57+
58+
return null;
59+
}
60+
61+
}
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package com.baeldung.lastmodifiedfile;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
5+
import java.io.File;
6+
import java.io.IOException;
7+
import java.nio.file.Files;
8+
import java.nio.file.Path;
9+
import java.nio.file.Paths;
10+
11+
import org.apache.commons.io.FileUtils;
12+
import org.junit.jupiter.api.BeforeAll;
13+
import org.junit.jupiter.api.Test;
14+
15+
public class LastModifiedFileAppUnitTest {
16+
17+
private final static String SOURCEDIRECTORY = "src/test/resources/lastmodfiles";
18+
19+
@BeforeAll
20+
public static void setUpFiles() throws IOException, InterruptedException {
21+
File srcDir = new File(SOURCEDIRECTORY);
22+
if (!srcDir.exists()) {
23+
srcDir.mkdir();
24+
}
25+
26+
FileUtils.cleanDirectory(srcDir);
27+
28+
File file01 = new File(SOURCEDIRECTORY + "/file01.txt");
29+
file01.createNewFile();
30+
31+
Thread.sleep(2000);
32+
33+
File file02 = new File(SOURCEDIRECTORY + "/file02.txt");
34+
file02.createNewFile();
35+
36+
Thread.sleep(2000);
37+
38+
File file03 = new File(SOURCEDIRECTORY + "/file03.txt");
39+
file03.createNewFile();
40+
41+
Thread.sleep(2000);
42+
43+
Files.write(Paths.get(SOURCEDIRECTORY + "/file02.txt"), "Hello File02".getBytes());
44+
45+
}
46+
47+
@Test
48+
public void givenDirectory_whenUsingIoApi_thenFindLastModfile() throws IOException {
49+
File lastModFile = LastModifiedFileApp.findUsingIOApi(SOURCEDIRECTORY);
50+
51+
assertThat(lastModFile).isNotNull();
52+
assertThat(lastModFile.getName()).isEqualTo("file02.txt");
53+
}
54+
55+
@Test
56+
public void givenDirectory_whenUsingNioApi_thenFindLastModfile() throws IOException {
57+
Path lastModPath = LastModifiedFileApp.findUsingNIOApi(SOURCEDIRECTORY);
58+
59+
assertThat(lastModPath).isNotNull();
60+
assertThat(lastModPath.toFile()
61+
.getName()).isEqualTo("file02.txt");
62+
}
63+
64+
@Test
65+
public void givenDirectory_whenUsingApacheCommons_thenFindLastModfile() throws IOException {
66+
File lastModFile = LastModifiedFileApp.findUsingCommonsIO(SOURCEDIRECTORY);
67+
68+
assertThat(lastModFile).isNotNull();
69+
assertThat(lastModFile.getName()).isEqualTo("file02.txt");
70+
}
71+
72+
}

0 commit comments

Comments
 (0)