Directory Object

   
 
/*
 * C# Programmers Pocket Consultant
 * Author: Gregory S. MacBeth
 * Email: gmacbeth@comporium.net
 * Create Date: June 27, 2003
 * Last Modified Date:
 * Version: 1
 */
using System;
using System.IO;

namespace Client.Chapter_11___File_and_Streams
{
  public class DirectoryObject {
    static void Main(string[] args)
    {
      DirectoryInfo MyRoot = new DirectoryInfo(@"c:projects");
      DirectoryInfo[] MySub;
      DirectoryInfo TheFolder = null;
      FileInfo[] MyFiles;
      FileInfo TheFile = null;
      FileStream MyStream;

      MyRoot.CreateSubdirectory("MyFolder");
      MySub = MyRoot.GetDirectories();
      foreach (DirectoryInfo D in MySub)
      {
        if (D.Name == "MyFolder")
          TheFolder = D;
      }

      MyFiles = TheFolder.GetFiles();
      foreach (FileInfo F in MyFiles)
      {
        if (F.Name == "Testing.txt")
        {
          TheFile = F;
          MyStream = TheFile.Open(FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);

          int i = 0;
          byte b = 0;

          while (i != 000)
          {
            MyStream.WriteByte(b);
            i++;
            b++;
          }
        }
      }

      TheFile.Delete();
      TheFolder.Delete();
    }
  }
}

           
         
     


Set Current Directory

   
 

using System;
using System.IO;

class MainClass {
    static void Main() {
        Console.WriteLine("Changing current directory to c:");
        Directory.SetCurrentDirectory(@"c:");

        Console.WriteLine("Now the relative path 'file.txt' " + "will automatically become '" + Path.GetFullPath("file.txt") + "'");
    }
}
           
         
     


Get Current Directory

   
 


using System;
using System.IO;

class MainClass {
    static void Main() {
        Console.WriteLine("Using: " + Directory.GetCurrentDirectory());
        Console.WriteLine("The relative path 'file.txt' " + "will automatically become: '" + Path.GetFullPath("file.txt") + "'");

    }
}
           
         
     


Check the Existance of a Directory

   
 


using System;
using System.IO;

class MainClass {
    static void Main(string[] args) {
        foreach (string arg in args) {
            Console.Write(arg);

            if (Directory.Exists(arg)) {
                Console.WriteLine(" is a  directory");
            } else if (File.Exists(arg)) {
                Console.WriteLine(" is a  file");
            } else {
                Console.WriteLine(" does not exist");
            }
        }
    }
}

           
         
     


Copy Directory

   
  
using System;
using System.IO;

class MainClass {
    static void Main(string[] args) {
        DirectoryInfo sourceDir = new DirectoryInfo("c:source");
        DirectoryInfo destinationDir = new DirectoryInfo("c:	arget");

        CopyDirectory(sourceDir, destinationDir);

    }

    static void CopyDirectory(DirectoryInfo source, DirectoryInfo destination) {
        if (!destination.Exists) {
            destination.Create();
        }
        // Copy all files.
        FileInfo[] files = source.GetFiles();
        foreach (FileInfo file in files) {
            file.CopyTo(Path.Combine(destination.FullName,
               file.Name));
        }

        // Process subdirectories.
        DirectoryInfo[] dirs = source.GetDirectories();
        foreach (DirectoryInfo dir in dirs) {
            string destinationDir = Path.Combine(destination.FullName, dir.Name);
            CopyDirectory(dir, new DirectoryInfo(destinationDir));
        }
    }
}

   
     


Calculate Directory Size

   
  

using System;
using System.IO;

class MainClass {
    static void Main(string[] args) {
        DirectoryInfo dir = new DirectoryInfo("c:");
        Console.WriteLine("Total size: " + CalculateDirectorySize(dir, true).ToString() + " bytes.");

    }

    static long CalculateDirectorySize(DirectoryInfo directory, bool includeSubdirectories) {
        long totalSize = 0;

        FileInfo[] files = directory.GetFiles();
        foreach (FileInfo file in files) {
            totalSize += file.Length;
        }

        if (includeSubdirectories) {
            DirectoryInfo[] dirs = directory.GetDirectories();
            foreach (DirectoryInfo dir in dirs) {
                totalSize += CalculateDirectorySize(dir, true);
            }
        }

        return totalSize;
    }
}

   
     


Get Last Access Time

   
  

using System;
using System.IO;

class MainClass {
    static void Main(string[] args) {
        FileInfo file = new FileInfo("c:a.txt");

        // Display directory information.
        DirectoryInfo dir = file.Directory;

        Console.WriteLine("Checking directory: " + dir.Name);
        Console.WriteLine("In directory: " + dir.Name);
        Console.Write("Directory exists: ");
        Console.WriteLine(dir.Exists.ToString());

        if (dir.Exists) {
            Console.Write("Directory last accessed: ");
            Console.WriteLine(dir.LastAccessTime.ToString());
        }
        Console.WriteLine();
    }
}