ColdFusion UDF Library - getFiles
December 16th, 2008
«« Back to ColdFusion Library
Category:
SYSTEM
Description:
A Java based CFML UDF to get a list of files from the specified path.
Parameters:
Returns:
A query containing the following columns: fullpath,directory,name,extension,type,isDirectory,isFile,size,dateLastModified,isHidden,isReadonly,children
Requires:
queryConcat()
Sample Use:
Copy to Clipboard
Category:
SYSTEM
Description:
A Java based CFML UDF to get a list of files from the specified path.
Parameters:
- path (String, required)
The path or filename to start getting a list of files from. This can be a full or relative path. - filter (RegularExpression, Default: )
A regular expression to filter the results by. Default is no filter. - type (Numeric, Default: 0)
Return all types, directories only, or files only.
Values:- 0 - Return both files and directories.
- 1 - Return directories only.
- 2 - Return files only.
- 0 - Return both files and directories.
- recurse (Numeric, Default: 0)
How many levels of sub directors to recurse through. 0 is none, -1 is all.
Returns:
A query containing the following columns: fullpath,directory,name,extension,type,isDirectory,isFile,size,dateLastModified,isHidden,isReadonly,children
Requires:
queryConcat()
Sample Use:
Copy to Clipboard
/* #depends:queryConcat# */
function getFiles(path){
var handle = "";
var handle2 = "";
var filelist = "";
var filelist2 = "";
var handle3 = "";
var size = 0;
var count = 0;
var loop = 0;
var loop2 = 0;
var date = "";
var recurse = 0;
var depth = 0;
var filter = ".*";
var type = 0;
var value = queryNew("fullpath,directory,name,extension,type,isDirectory,isFile,size,dateLastModified,isHidden,isReadOnly,children");
var recurses = arrayNew(1);
if (arrayLen(arguments) gte 2 and isSimpleValue(arguments[2]))filter = arguments[2];
if (arrayLen(arguments) gte 3 and isNumeric(arguments[3]))type = arguments[3];
if (arrayLen(arguments) gte 4 and isNumeric(arguments[4]))recurse = arguments[4];
if (arrayLen(arguments) gte 5 and isNumeric(arguments[5]))depth = arguments[5];
handle = createObject("java","java.io.File").init(path);
if (handle.exists()){
if (handle.isDirectory()){
filelist = handle.list();
for (loop = 1; loop lte arrayLen(filelist); loop = incrementValue(loop)){
handle2 = createObject("java","java.io.File").init("#handle.getAbsolutePath()#\#filelist[loop]#");
if (handle2.isDirectory() and (recurse gt depth or recurse eq -1))recurses[arrayLen(recurses)+1] = getFiles(handle2.getAbsolutePath(),filter,type,recurse,incrementValue(depth));
if (reFindNoCase(filter,filelist[loop])){
if (type eq 0 or (type eq 1 and handle2.isDirectory()) or (type eq 2 and handle2.isFile())){
filelist2 = handle2.list();
if (isDefined("filelist2")){
count = arrayLen(filelist2);
for (loop2 = 1; loop2 lte arrayLen(filelist2); loop2 = incrementValue(loop2)){
handle3 = createObject("java","java.io.File").init("#handle.getAbsolutePath()#\#filelist[loop]#\#filelist2[loop2]#");
size = size+handle3.length();
}
}
else{
size = handle2.length();
count = 0;
}
date = createObject("java","java.util.Date").init(handle2.lastModified());
queryAddRow(value);
querySetCell(value,"fullpath",handle2.getAbsolutePath());
querySetCell(value,"directory",left(getDirectoryFromPath(handle2.getAbsolutePath()),len(getDirectoryFromPath(handle2.getAbsolutePath()))-1));
querySetCell(value,"name",getFileFromPath(handle2.getAbsolutePath()));
querySetCell(value,"extension",iif(findNoCase(".",handle2.getPath()),de(listLast(handle2.getPath(),".")),de("")));
querySetCell(value,"type",iif(handle2.isDirectory(),de("dir"),de("file")));
querySetCell(value,"isDirectory",handle2.isDirectory());
querySetCell(value,"isFile",handle2.isFile());
querySetCell(value,"size",size);
querySetCell(value,"dateLastModified",date);
querySetCell(value,"isHidden",yesNoFormat(handle2.isHidden()));
querySetCell(value,"isReadOnly",yesNoFormat(not handle2.canWrite()));
querySetCell(value,"children",count);
};
};
};
}
else{
if (type eq 0 or type eq 2){
if (reFindNoCase(filter,getFileFromPath(handle.getAbsolutePath()))){
date = createObject("java","java.util.Date").init(handle.lastModified());
queryAddRow(value);
querySetCell(value,"fullpath",handle.getAbsolutePath());
querySetCell(value,"directory",left(getDirectoryFromPath(handle.getAbsolutePath()),len(getDirectoryFromPath(handle.getAbsolutePath()))-1));
querySetCell(value,"name",getFileFromPath(handle.getAbsolutePath()));
querySetCell(value,"extension",iif(findNoCase(".",handle.getPath()),de(listLast(handle.getPath(),".")),de("")));
querySetCell(value,"type",iif(handle.isDirectory(),de("dir"),de("file")));
querySetCell(value,"isDirectory",handle.isDirectory());
querySetCell(value,"isFile",handle.isFile());
querySetCell(value,"size",size);
querySetCell(value,"dateLastModified",date);
querySetCell(value,"isHidden",yesNoFormat(handle.isHidden()));
querySetCell(value,"isReadOnly",yesNoFormat(not handle.canWrite()));
querySetCell(value,"children",count);
};
};
}
}
for (loop = 1; loop lte arrayLen(recurses); loop = incrementValue(loop))value = server.queryConcat(value,recurses[loop]);
return value;
}
// http://www.programmers.org/index.php/coldfusion-udf-library/?ckey=93&function=getFiles



