Using ColdFusion to Count the Files in a Directory - Part II

<CFDIRECTORY> , Microsoft FileSystemObject Add comments

So back on March 5th I wrote a post about Using Cold Fusion to Count the Files in a Directory.  Recently a component I wrote that keeps an eye on mail server processes choked to death on the large number of files it had to report on.  Another component in the mail server failed (one vendor updated their component without telling another vendor about it, yada yada) and the mail queue backed up.  With scores of thousands of files in the directory, I found CFDIRECTORY to be kind of slow.

So.  I wrote a new function to that uses the FileSystemObject to look at a single directory, and I think it might work better.  I pointed it at a photo gallery that had a large number of files and it was very responsive.   Here’s hoping, right?  Regardless, it’s another way of counting files in a folder; I’m sure I’ll need this again someday, and that’s what this blog is all about, right?  Maybe you’ll find it handy, too.

Here’s the idea:

<cffunction name="fileCountFSO" returnType="numeric" output="false">


<cfargument name="folderLoc" required="no">
<cfparam name="folderLoc" default="">


<cflock 
timeout ="30" 
throwontimeout ="No" 
name ="#CreateUUID()#" 
type ="EXCLUSIVE"
>


<cftry>


<cfobject 
type="COM" 
name ="FSO" 
class ="Scripting.FileSystemObject" 
action ="CONNECT"
/>


<cfcatch>


<cfobject 
type="COM" 
name="FSO" 
class="Scripting.FileSystemObject" 
action="CREATE"
/>


</cfcatch> 


</cftry>
 
</cflock>


<cftry>


<cfscript>


objFolderFiles = FSO.getFolder(folderLoc).Files;
objFolderCount = objFolderFiles.Count;


</cfscript> 


<cfcatch>


<cfset objFolderCount = 0>


</cfcatch>


</cftry>


<cfreturn #objFolderCount#>


</cffunction>

2 responses to “Using ColdFusion to Count the Files in a Directory - Part II”

  1. Marcos Placona Says:
    Two thing I think are worth mentioning. - You will only be able to benefit of FileSystemObject is your ColdFusion is installed under a Windows install. If like me, you have it running in Linux (or anything other than Windows really), this won't work at all. - ColdFusion is written all together. It was called Cold Fusion up to version 4.5 (or so), but when ColdFusion 5 was released, it was already spelled as ColdFusion with not space. That's to differentiate from Cold Fusion (http://en.wikipedia.org/wiki/Cold_fusion) Nice tip anyway :-)
  2. Michael Cummins Says:
    Both good points. I wonder how many ways there are to skin this cat in a CF *nix install? By the way, I had to analyze yet another botnet mail surge earlier this morning, and this FSO method of counting files was far more responsive than the regular CFDIRECTORY way of doing things. I dare say it was quite snappy. Two thumbs up. I was aware of the name change, I’m just a bit sloppy with its usage. I’ll try to tighten up on that a bit.

Leave a Reply

Leave this field empty:

Powered by Mango Blog. Initial Template Design and Icons by N.Design Studio, modified by Michael Cummins.