Thursday, December 9, 2010

Listing details of files and folders in a Directory in c#

You can get the list of files and folders in WIndows explorer or in a DOS promt. It's often useful to get content of a folder dynamically using some scripts or program, especially if you need this details in some application. Below is chunk of C# code which give you the details for files and folders of a given path. You can add additional fields to your out based on your need.

Make an executable file, i.e exe, and use it in your application or run it from command prompt. Results can be redirected to a text file or csv file.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;


namespace WinConsole
{
class ListFilesOfDirectory
{
public static long size = 0;
public static long totalSizeInMB = 0;
public static long maxSizeInMB = 0;

public static void listFiles(string path)
{

DirectoryInfo di = new DirectoryInfo(path);

DirectoryInfo[] folders = di.GetDirectories();

long[] listOfDir = new long[folders.Length];
int i=0;
foreach (DirectoryInfo d in folders)
{
size = 0;
listOfDir[i] = GetSizeOdDirectory(d);
i += 1;
totalSizeInMB += size / (1024 * 1024);
if (maxSizeInMB <>
maxSizeInMB = size / (1024 * 1024);
}
// display results in tab separated txt file
Console.WriteLine("**\t**\t**\t**\t**");
Console.WriteLine("File\t\t\t\t Size in MB");
for(int j=0;j
{
Console.WriteLine(folders[j].Name + "\t \t \t"+listOfDir[j].ToString());
}
Console.WriteLine("**\t**\t**\t**\t**");
// Console.ReadKey();
}

public static long GetSizeOdDirectory(DirectoryInfo directory)
{

DirectoryInfo[] dir = directory.GetDirectories();
foreach (DirectoryInfo d in dir)
{
GetSizeOdDirectory(d);
}
FileInfo[] files = directory.GetFiles();
foreach (FileInfo f in files)
{
size += f.Length;
}
return size;
}
public static void Main(string[] args)
{
string path=args[0].ToString();
listFiles(path);

}
}
}