|
Comments
|
Today's Top SOA Links
ColdFusion News Desk Ben Forta's Blog - Scorpio File I/O Enhancements
We did indeed add a new function to Scorpio called GetFileInfo() which returns a structure
By: Ben Forta
May. 13, 2007 06:30 PM
At one of the usergroup sessions this week someone asked if there was a way to get file information (size, date time, etc.) easily using a function. I said they should use <CFDIRECTORY>, but afterwards remembered that we did indeed add a new function to Scorpio called GetFileInfo() which returns a structure containing:
Which makes this a good opportunity to review some of the file i/o changes coming in Scorpio. For starters, if you have ever had to work with large text files in ColdFusion (maybe parsing a large CSV file) you'll know that doing so is very inefficient. You probably use code like this: <!--- Read entire file ---> <cffile action="read" file="#fileName#" variable="myFile"> <!--- Loop through file variable one line at a time ---> <cfloop list="#myFile#" index="line" delimiters="#chr(10)##chr(13)#"> <!--- Do stuff with line here ---> ... </cfloop> This is slow for two reasons. Not only does ColdFusion read the entire file into memory in a variable all at once, but also looping through the file requires treating it as a list which involves lots of parsing which can also be resource intensive. Well, inefficient no more. In ColdFusion Scorpio you'll be able to replace the above code block with this: <!--- Loop through file one line at a time ---> <cfloop file="#fileName#" index="line"> <!--- Do stuff with line here ---> ... </cfloop> This code block open the file, reads one line at a time, and closes it when done. I actually used this myself recently in a ColdFusion code snippet that had to parse a massive tab delimited file, turning each line into a query row. Replacing the old <CFFILE> <CFLOOP> with a new <CFFILE FILE=> cut down processing time from several minutes to under 10 seconds. Oh, and although reading files line by line is the more common use case, you can also read by n characters at a time, like this: <!--- Loop through file 100 characters at a time ---> <cfloop file="#fileName#" index="chars" characters="100"> <!--- Do stuff with line here ---> ... </cfloop> In addition to the <CFLOOP> enhancements, we've also added lots of new file i/o functions that you can use to access and manipulate files directly. The new functions include:
Reader Feedback: Page 1 of 1
Your Feedback
Subscribe to the World's Most Powerful Newsletters
Subscribe to Our Rss Feeds & Get Your SYS-CON News Live!
|
SYS-CON Featured Whitepapers
Most Read This Week |
||||||||||||||||||||||||||||||