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