/* * 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(); } } }
File Stream
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(); } }