The Largest Repository of ColdFusion Knowledge in The World for More Than 12 Years

ColdFusion on Ulitzer

Subscribe to ColdFusion on Ulitzer: eMailAlertsEmail Alerts newslettersWeekly Newsletters
Get ColdFusion on Ulitzer: homepageHomepage mobileMobile rssRSS facebookFacebook twitterTwitter linkedinLinkedIn


CFDJ Authors: AppDynamics Blog, Michael Kopp, Tad Anderson, Bob Gourley, Jayaram Krishnaswamy

Related Topics: ColdFusion on Ulitzer

CFDJ: Article

ColdFusion 8 - GetDriveInfo() UDF Powered By .NET

This is an example that I used when demonstrating ColdFusion 8 .NET integration

Ben Forta's Blog

This is an example that I used when demonstrating ColdFusion 8 .NET integration on the recent usergroup tour, and as requested, I am posting it publicly. GetDriveInfo() returns a query containing specifics about the hard drives on your server, it returns all drives unless an optional drive letter is passed to it. GetDriveInfo() uses the .NET System.IO.DriveInfo class (which was introduced in .NET 2, and thus this example requires .NET 2 or 3).

Here is the code:

<!--- Get drive details for one or all drives --->
<cffunction name="GetDriveInfo" returntype="query" output="false">
   <cfargument name="drive" required="no" default="">

   <!--- Local vars --->
   <cfset var result=QueryNew("name,type,isready,format,label,totalsize,freespace",
                     "varchar,varchar,bit,varchar,varchar,double,double")>

   <cfset var sidiClass="">
   <cfset var drives="">
   <cfset var i=0>

   <!--- Get System.IO.DriveInfo class --->
   <cfobject type=".NET"
            name="sidiClass"
            class="System.IO.DriveInfo">

   <!--- Get drives --->
   <cfset drives=sidiClass.GetDrives()>

   <!--- Loop through drives --->
   <cfloop from="1" to="#ArrayLen(drives)#" index="i">
      <!--- Check if need this one --->
      <cfif ARGUMENTS.drive IS ""
         OR ARGUMENTS.drive EQ drives[i].Get_Name()
         OR (Len(ARGUMENTS.drive) IS 1
            AND ARGUMENTS.drive EQ Left(drives[i].Get_Name(), 1))>

         <!--- Add row --->
         <cfset QueryAddRow(result)>
         <!--- Get name, type, and ready flag --->
         <cfset QuerySetCell(result, "name", drives[i].Get_Name())>
         <cfset QuerySetCell(result, "type", drives[i].Get_DriveType().ToString())>
         <cfset QuerySetCell(result, "isready", drives[i].Get_IsReady())>
         <!--- Get extra details ONLY if ready, or will throw error --->
         <cfif drives[i].Get_IsReady()>
            <cfset QuerySetCell(result, "format", drives[i].Get_DriveFormat())>
            <cfset QuerySetCell(result, "label", drives[i].Get_VolumeLabel())>
            <cfset QuerySetCell(result, "totalsize", drives[i].Get_TotalSize())>
            <cfset QuerySetCell(result, "freespace", drives[i].Get_AvailableFreeSpace())>
         </cfif>
      </cfif>
   </cfloop>

   <!--- Return result --->
   <cfreturn result>

</cffunction>

And here is a simple test example:

<!--- Test with all drives --->
<h3>All Drives</h3>
<cfdump var="#GetDriveInfo()#">

<!--- Test with just C: drive --->
<h3>C: Drive</h3>
<cfdump var="#GetDriveInfo("C")#">

<!--- Display just space on C: drive --->
<h3>Free Space On C Drive</h3>
<cfdump var="#NumberFormat(GetDriveInfo("C").freespace)#">

More Stories By Ben Forta

Ben Forta is Adobe's Senior Technical Evangelist. In that capacity he spends a considerable amount of time talking and writing about Adobe products (with an emphasis on ColdFusion and Flex), and providing feedback to help shape the future direction of the products. By the way, if you are not yet a ColdFusion user, you should be. It is an incredible product, and is truly deserving of all the praise it has been receiving. In a prior life he was a ColdFusion customer (he wrote one of the first large high visibility web sites using the product) and was so impressed he ended up working for the company that created it (Allaire). Ben is also the author of books on ColdFusion, SQL, Windows 2000, JSP, WAP, Regular Expressions, and more. Before joining Adobe (well, Allaire actually, and then Macromedia and Allaire merged, and then Adobe bought Macromedia) he helped found a company called Car.com which provides automotive services (buy a car, sell a car, etc) over the Web. Car.com (including Stoneage) is one of the largest automotive web sites out there, was written entirely in ColdFusion, and is now owned by Auto-By-Tel.

Comments (1)

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.