Pete Freitag Pete Freitag

Finding the Last Modified Date on a File

Published on January 11, 2007
By Pete Freitag
coldfusion

This question came up on my local CFUG mailing list yesterday:

how can I get the time last updated of the two documents? I know you can do this with uploaded files using FILE.TimeLastModified. Is there anyway to do it with existing files? I know I could do a hack with CFDIRECTORY where I loop through the files in the directory looking for the one I'm interested in and then getting the dateLastModified on that, but I'm thinking there has to be a more direct way.

You can use java's File class to get the lastModified timestamp:

<cfset myFile = CreateObject("java", "java.io.File")>
<cfset myFile.init("/path/to/file")>
<cfset last_modified = myFile.lastModified()>


java coldfusion file cfdirectory

Finding the Last Modified Date on a File was first published on January 11, 2007.

If you like reading about java, coldfusion, file, or cfdirectory then you might also like:

FuseGuard Web App Firewall for ColdFusion

The FuseGuard Web Application Firewall for ColdFusion & CFML is a high performance, customizable engine that blocks various attacks against your ColdFusion applications.

CFBreak
The weekly newsletter for the CFML Community


Comments

Thats a great solution.

There is also the filter attribute to cfdirectory that would negate the need to loop over and look for the file. Still I think the Java File solution is better.
by Sam Farmer on 01/11/2007 at 2:33:30 PM UTC
If you don't want to be dependent on Java you can use <cfdirectory>, specify a filter that is the file name and a query of queries on the result to match the actual file (fix due to wildcards in file name).

No need to loop. :)

Its slower, but more portable.
by Elliott on 01/11/2007 at 3:45:50 PM UTC
Well, you don't exactly have to loop through it. Can't you just query it?
by Sam on 01/11/2007 at 3:59:22 PM UTC
Hi

I want to display last modified date in HTML page.
by Navin on 06/15/2007 at 8:53:24 AM UTC
Do I use the absolute path (ie., d:/..a.js) and I'm getting a number (ie., 1178038419822 ). Why?
by Patrick Whittingham on 07/26/2007 at 11:00:14 AM UTC
you may try this:
File file = new File(filename);
long time = file.System.currentTimeMillis();
boolean success = file.setLastModified(newModifiedTime);
if (!success) {...}
// operation failed.
by bruce on 02/20/2008 at 7:48:06 PM UTC
Documentation says:
Returns the time that the file denoted by this abstract pathname was last modified.

Returns:
A long value representing the time the file was last modified, measured in milliseconds since the epoch (00:00:00 GMT, January 1, 1970), or 0L if the file does not exist or if an I/O error occurs

I suppose you'd have to compare it at the ms level in that case -

<cfset y = datediff('s','00:00:00 January 1, 1970',now())*1000/>
by Kevin penny on 04/17/2008 at 2:44:20 PM UTC
Actually, this works better as it takes into account your local timezone difference between your server and GMT.

<cfset y = datediff('s',LSParseDateTime('January 1, 1970 00:00:00 AM GMT'),now())*1000/>

This will convert the Base Jan 1970 time into MS where you can then use simple math to do your comparisons at the MilliSeconds level.
by Kevin Penny on 04/17/2008 at 3:32:12 PM UTC
Pete, I'm trying to get the image last modified date from a *remote* image (things on imgur.com) for which I do have the direct link to the image but don't have it on my server. Is there a way to do that? This Q&A seems to assume on local/uploaded files.
by PJ on 09/20/2018 at 4:16:25 AM UTC