41

I'm making a basic file browser and want to get the last modified date of each file in a directory. How might I do this? I already have the name and type of each file (all stored in an array), but need the last modified date, too.

3 Answers 3

47

As in the javadocs for java.io.File:

new File("/path/to/file").lastModified()

40

Since Java 7, you can use java.nio.file.Files.getLastModifiedTime(Path path):

Path path = Paths.get("C:\\1.txt");

FileTime fileTime;
try {
    fileTime = Files.getLastModifiedTime(path);
    printFileTime(fileTime);
} catch (IOException e) {
    System.err.println("Cannot get the last modified time - " + e);
}

where printFileName can look like this:

private static void printFileTime(FileTime fileTime) {
    DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy - hh:mm:ss");
    System.out.println(dateFormat.format(fileTime.toMillis()));
}

Output:

10/06/2016 - 11:02:41
1
  • 28
    The answer is correct and well explained, but please don’t teach the young ones to use the long outmoded and notoriously troublesome SimpleDateFormat class. Instead, since Java 8, use FileTime.toInstant(), convert the Instant to ZonedDateTime and either just print it or format it using a DateTimeFormatter.
    – Anonymous
    Commented Jan 29, 2018 at 10:47
0

You could do the following to achieve the result: Explained the returns types etc. Hope it helps you.

File file = new File("\home\noname\abc.txt");
String fileName = file.getAbsoluteFile().getName(); 
// gets you the filename: abc.txt
long fileLastModifiedDate = file.lastModified(); 
// returns last modified date in long format 
System.out.println(fileLastModifiedDate); 
// e.g. 1644199079746
Date date = new Date(fileLastModifiedDate); 
// create date object which accept long
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 
// this is the format, you can change as you prefer: 2022-02-07 09:57:59
String myDate = simpleDateFormat.format(date); 
// accepts date and returns String value
System.out.println("Last Modified Date of the FileName:" + fileName + "\t" + myDate); 
// abc.txt and 2022-02-07 09:57:59
1
  • 2
    Please don’t teach the young ones to use the long outdated and notoriously troublesome SimpleDateFormat class. At least not as the first option. And not without any reservation. We have so much better in java.time, the modern Java date and time API, and its DateTimeFormatter.
    – Anonymous
    Commented Dec 10, 2022 at 12:01

Not the answer you're looking for? Browse other questions tagged or ask your own question.