CFDirectory Filtering Uses Pipe Character For Multiple Filters (Thanks Steve Withington)

Posted May 7, 2008 at 9:47 AM

Tags: ColdFusion

After I just posted about how the CFDirectory tag can use the single-character wild card, "?", in its filtering, Steve Withington came in and demonstrated that you can also use the pipe character, "|", to use multiple filters in the same CFDirectory tag. After reading this, I went to the ColdFusion 8 docs but didn't see this listed or mentioned anywhere. As Dan Vega pointed joked, what's the secret handshake you need to get at this kind of information??

Anyway, I ran a quick test, based on my original post, just to see if this worked. In the following demo, I am filtering on files that have the name ben or anna:

 Launch code in new window » Download code as text file »

  • <!---
  • Get all the files that are have either the name ben
  • or anna in them. To separate out the values, we are
  • going to use the pipe "|" character.
  • --->
  • <cfdirectory
  • action="list"
  • directory="#ExpandPath( './' )#"
  • listinfo="name"
  • filter="anna.*|ben.*"
  • name="qFile"
  • />
  •  
  • <!--- Output file list. --->
  • <cfdump
  • var="#qFile#"
  • label="File List With Ben Or Anna"
  • />

Running the above code, I get the following CFDump output:


 
 
 

 
CFDirectory Filter Can Use Pipe Character,  
 
 
 

Works quite nicely, like a regular expression. What's odd, though, is that if you look at the CFZip and the CFZipParam tag, they also have a Filter attribute, but they use the comma to separate out different filter values. I wonder why the difference in things that are doing almost the exact same thing.

Download Code Snippet ZIP File

Post Comment  |  Ask Ben  |  Permalink  |  Print Page




Learning ColdFusion 9 - ColdFusion 9 tutorials, samples, examples, demos

Reader Comments

May 7, 2008 at 10:32 AM // reply »
7 Comments

No problem, thanks for the mention.


May 7, 2008 at 10:53 PM // reply »
9 Comments

How interesting! Though I did know about the ? wildcard (it is in the docs), the ability to apply several filters with the | delimiter is a very nice surprise!
And very timely, too, as I have been working with cfdirectory just yesterday and had to end up using the tag twice to get only pdf and zip files out of a dir... Will go re-write that cfc now!

I have tested it in CFMX7 and it works there, too.

However, checking the docs, as you did, I see that the FILTER attribute in the CF8 CFML Reference (PDF) is described as:

"File extension filter applied to returned names, for example, *.cfm. One filter can be applied."

Since it states that ONE filter can be applied, how likely is it that this undocumented feature may not be supported in future releases? Or is it just bad wording for 'you can't use filter attribute more than once in the tag'?


May 8, 2008 at 1:41 AM // reply »
9 Comments

Ben ...

Do you know of a good reason why Adobe doesn't put ALL the ColdFusion information regarding features & benefits in the docs?

It's not as if I am at the level of programming competency to leverage these features to my benefit yet ...

But it would be nice to know that there is a way to research and discover these useful assets ... individually ...

What if ... Ben, Dan, Ray, Charlie ... on and on ... weren't available ...

<?>


May 8, 2008 at 7:18 AM // reply »
6,371 Comments

@Azadi,

I am on ColdFusion 8 and it works, so that "one filter" is not accurate. Maybe this is undocumented... or maybe it was just not documented well. I am not sure.

@Edward,

I like to think that ColdFusion is so robust and so powerful that missing parts of the documentation is just inevitable :) As far as a world with out Ben, Dan, Ray, Charlie... I don't want to think about it.


ike
Nov 24, 2008 at 7:11 PM // reply »
78 Comments

They're different because they were done by different programmers at different times and they weren't really paying attention to what had come before... which happens all the time in software development. Why do we have <cffile actuion="upload" /> but instead of <cffile action="download" /> we're forced to use <cfcontent />? That's always seemed pretty incongruous to me honestly. :)

And oddly enough, the comma in cfzip has the potential to cause problems because file names can contain commas. You and I may not be tempted to include a comma in a file name, but that doesn't mean users won't upload word docs with commas in their names that end up in zip files or potentially are already in a zip file before they're uploaded. The pipe would have been safer, although I'm not certain it's not also allowed in a file name... though it is much less likely to find it's way into the file name for a word doc for example.


Nov 24, 2008 at 7:19 PM // reply »
6,371 Comments

@Ike,

That's true - I've definitely seen people put commas in their file names, especially when they have sort of internal versioning methodology:

document,FG18,7,3.doc


Post Comment  |  Ask Ben

Recent Blog Comments
Nov 7, 2009 at 5:53 PM
Ask Ben: Javascript String Replace Method
You can find here an advanced function that prepared with javascript replace function. This can make the first letters of words, sentences, lines and whatever you define automatically: http://www.m ... read »
Andrew Neely
Nov 7, 2009 at 4:56 PM
A Moment That Touched Me - The Fountainhead
Ben, Glad you enjoyed the podcast. Yeah, the Tank Riot guys can get really chatty during the episodes, but that's part of the charm of it for me. They've covered everything from Nichola Tesla to Cha ... read »
Nov 7, 2009 at 4:43 PM
Building A Fixed-Position Bottom Menu Bar (ala FaceBook)
Is it possible to make some more MenĂ¼`s ? ... read »
Jill
Nov 7, 2009 at 11:40 AM
How To Unformat Your Code (Like A Pro)
Derek, I think you might be right - sweet! Thanks for the link :) ... read »
Nov 7, 2009 at 11:25 AM
How To Unformat Your Code (Like A Pro)
I think it would be way easier to just use this http://www.logichammer.com/html-formatter/ He just released v3 and it rocks. ... read »
Jill
Nov 7, 2009 at 7:58 AM
How To Unformat Your Code (Like A Pro)
LMAO - this was pretty funny! I have to admit - I also love to reformat code so I can read it. My boss used to tell me to leave my OCD at home. Now I don't feel so bad after reading everyone else' ... read »
Nov 6, 2009 at 10:10 PM
How To Unformat Your Code (Like A Pro)
The timing of this post is just uncanny. I spent the last 15-20 minutes manually un-formatting my "Ben Nadel" style code within a CFC of mine. I was really digging the readability a few weeks ago, bu ... read »
Roe
Nov 6, 2009 at 5:11 PM
Passing Arrays By Reference In ColdFusion - SWEEET!
ArraySort also reorders the results of these java obj's ... read »