Finding the Last Modified Date on a File

January 11, 2007

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", "")>
<cfset myFile.init("/path/to/file")>
<cfset last_modified = myFile.lastModified()>

Related Entries

6 people found this page useful, what do you think?


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.
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.
Well, you don't exactly have to loop through it. Can't you just query it?
Hi I want to display last modified date in HTML page.
Do I use the absolute path (ie., d:/..a.js) and I'm getting a number (ie., 1178038419822 ). Why?
you may try this: File file = new File(filename); long time = file.System.currentTimeMillis(); boolean success = file.setLastModified(newModifiedTime); if (!success) {...} // operation failed.
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/>
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.

Post a Comment


Spell Checker by Foundeo

Recent Entries


did you hack my cf?