Reputation: 32083
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.
Upvotes: 43
Views: 63665
Reputation: 12757
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
Upvotes: 0
Reputation: 28598
As in the javadocs for java.io.File
:
new File("/path/to/file").lastModified()
Upvotes: 49
Reputation: 56626
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
Upvotes: 42