1. Tech

Your suggestion is on its way!

An email with a link to:

http://delphi.about.com/library/fcl/system/io/blfcldirectory.htm

was emailed to:

Thanks for sharing About.com with others!

Delphi for .NET FCL Examples Reference
Directory class namespace
System.IO
Declaration
type Directory = class sealed;
Description
Exposes static methods for creating, moving, and enumerating through directories and subdirectories.
Example
program System_IO_Directory;

{$APPTYPE CONSOLE}
{$AUTOBOX ON}

uses System.IO, System.Collections;

type
  DirectoryTest = class
  public
    class procedure Main;
  end;

  TArrayOfString = array of string;
  ShowDirSizeTest = class
  public
    class function DirSize(d: DirectoryInfo): Int64;
    class procedure Main(args: TArrayOfString); 
  end;

{
  DirectoryTest

  The following example determines whether a
  specified directory exists, deletes it if
  it does, and creates it if it does not. This
  example then moves the directory, creates a
  file in the directory, and counts the
  files in the directory.
}

class procedure DirectoryTest.Main;
var
  target: string;
  path: string;
  files : TArrayOfString;
begin
  // Specify the directories you want to manipulate.
  path := 'c:\MyDir';
  target := 'c:\TestDir';

  try
    // Determine whether the directory exists.
    if (Directory.Exists(path) = False) then
      // Create the directory it does not exist.
      Directory.CreateDirectory(path);

    // Delete the target to ensure it is not there
    if Directory.Exists(target) then
      Directory.Delete(target, True);

    // Move the directory.
    Directory.Move(path, target);

    // Create a file in the directory
    System.File.CreateText((target + '\myfile.txt'));

    // Count the files in the target directory
    files := Directory.GetFiles(target);
    Console.WriteLine('The number of files in {0} is {1}',
                       target,
                       System.Array(files).Length);
  except
    on e: Exception do
      Console.WriteLine('The process failed: {0}', 
                        e.ToString);
  end;
end; //DirectoryTest

{
 ShowDirSizeTest

 The following example calculates the size of a directory
 and its subdirectories, if any, and displays the total size
 in bytes.
}

class function ShowDirSizeTest.DirSize
               (d: DirectoryInfo): Int64;
type
  TArrayOfFileInfo = array of FileInfo;
  TArrayOfDirectoryInfo = array of DirectoryInfo;
var
  enumerator: System.Collections.IEnumerator;
  di: DirectoryInfo;
  dis: TArrayOfDirectoryInfo;
  fi: FileInfo;
  fis: TArrayOfFileInfo;
  Size: Int64;
begin
  Size := 0;

  // Add file sizes.
  fis := d.GetFiles;
  enumerator := System.Array(fis).GetEnumerator;
  while enumerator.MoveNext do
  begin
    fi := FileInfo(enumerator.Current);
    Size := Size + fi.Length;
  end;

  // Add subdirectory sizes.
  dis := d.GetDirectories;
  enumerator := System.Array(dis).GetEnumerator;
  while enumerator.MoveNext do
  begin
    di := DirectoryInfo(enumerator.Current);
    Size := Size + DirSize(di);
  end;


  Result := Size;
end; //ShowDirSizeTest.DirSize

class procedure ShowDirSizeTest.Main(args: TArrayOfString);
var
  d: DirectoryInfo;
begin
  if (System.Array(args).Length <> 1) then
    Console.WriteLine('You must provide a directory
                       argument at the command line.')
  else
  begin
    d := DirectoryInfo.Create(args[0]);
    
    Console.WriteLine('The size of {0} and its 
                       subdirectories is {1} bytes.',
                      d, 
                      DirSize(d));
  end;
end; //ShowDirSizeTest.Main

//test both programs
begin
  DirectoryTest.Main;

  ShowDirSizeTest.Main(TArrayOfString.Create('c:\Fun'));
end.
Example output
The number of files in c:\TestDir is 1

The size of c:\Fun and its 
subdirectories is 2028032 bytes.

Looking for Delphi for .NET demos / source code samples? Look no further, Delphi for .NET FCL Examples Reference is what you are searching for!

©2014 About.com. All rights reserved.