CFLib.org – Common Function Library Project

DirectoryList(directory [, filter] [, sort] [, recurse])

Last updated April 8, 2004

Version: 2 | Requires: ColdFusion MX | Library: CFMLLib

 
Rated 5 time(s). Average Rating: 4.2

Description:
Mimics the cfdirectory, action="list" command. Also adds recursive list.

Return Values:
Returns a query.

Example:

view plain print about
<cfscript>
dirList = directoryList("c:\temp","","name desc");
</cfscript>
<cfdump var="#dirList#">

Parameters:

Name Description Required
directory The directory to list. Yes
filter Optional filter to apply. No
sort Sort to apply. No
recurse Recursive directory list. Defaults to false. No

Full UDF Source:

view plain print about
<!---
 Mimics the cfdirectory, action=&quot;list&quot; command.
 Updated with final CFMX var code.
 Fixed a bug where the filter wouldn't show dirs.
 
 @param directory      The directory to list. (Required)
 @param filter      Optional filter to apply. (Optional)
 @param sort      Sort to apply. (Optional)
 @param recurse      Recursive directory list. Defaults to false. (Optional)
 @return Returns a query. 
 @author Raymond Camden (ray@camdenfamily.com) 
 @version 2, April 8, 2004 
--->

<cffunction name="directoryList" output="false" returnType="query">
    <cfargument name="directory" type="string" required="true">
    <cfargument name="filter" type="string" required="false" default="">
    <cfargument name="sort" type="string" required="false" default="">
    <cfargument name="recurse" type="boolean" required="false" default="false">
    <!--- temp vars --->
    <cfargument name="dirInfo" type="query" required="false">
    <cfargument name="thisDir" type="query" required="false">
    <cfset var path="">
    <cfset var temp="">
    
    <cfif not recurse>
        <cfdirectory name="temp" directory="#directory#" filter="#filter#" sort="#sort#">
        <cfreturn temp>
    <cfelse>
        <!--- We loop through until done recursing drive --->
        <cfif not isDefined("dirInfo")>
            <cfset dirInfo = queryNew("attributes,datelastmodified,mode,name,size,type,directory")>
        </cfif>
        <cfset thisDir = directoryList(directory,filter,sort,false)>
        <cfif server.os.name contains "Windows">
            <cfset path = "\">
        <cfelse>
            <cfset path = "/">
        </cfif>
        <cfloop query="thisDir">
            <cfset queryAddRow(dirInfo)>
            <cfset querySetCell(dirInfo,"attributes",attributes)>
            <cfset querySetCell(dirInfo,"datelastmodified",datelastmodified)>
            <cfset querySetCell(dirInfo,"mode",mode)>
            <cfset querySetCell(dirInfo,"name",name)>
            <cfset querySetCell(dirInfo,"size",size)>
            <cfset querySetCell(dirInfo,"type",type)>
            <cfset querySetCell(dirInfo,"directory",directory)>
            <cfif type is "dir">
                <!--- go deep! --->
                <cfset directoryList(directory & path & name,filter,sort,true,dirInfo)>
            </cfif>
        </cfloop>
        <cfreturn dirInfo>
    </cfif>
</cffunction>
blog comments powered by Disqus

Search CFLib.org


Latest Additions

Tayo Akinmade Tayo Akinmade added
arrayTrim
3 day(s) ago

Will Belden Will Belden added
longTime
9 day(s) ago

James Sleeman James Sleeman added
quickSort
19 day(s) ago

Ben Forta Ben Forta added
GetHostAddress
22 day(s) ago

Top Rated

Darwan Leonardo Sitepu EksporSQLData
Rated 5.0, 16 time(s)

Darwan Leonardo Sitepu backupDatabase
Rated 5.0, 13 time(s)

Barney Boisvert indentXml
Rated 5.0, 10 time(s)

Kevin Pepperman generateSsccAsn
Rated 5.0, 4 time(s)

Created by Raymond Camden / Design by Justin Johnson