Recursive Path Listing

In this chapter you will learn:

  1. Recursive Directory use
  2. Display Dir information recursivly

Recursive Directory use

using System;/* j a v a  2s .c o m*/
using System.IO;

class MainClass
{
  public static void ShowDirectory(DirectoryInfo di, int intLevel) 
  {
    string strPad = new String(' ', 2*intLevel);
    Console.WriteLine(strPad + di.Name);

    foreach (DirectoryInfo diChild in di.GetDirectories())
      ShowDirectory(diChild, intLevel+1);
  }

  public static void Main() 
  {
    DirectoryInfo di = new DirectoryInfo("c:\\");
    ShowDirectory(di, 0);
  }
}

The code above generates the following result.

Display Dir information recursivly

using System;//from ja v  a2  s  . c om
using System.IO;

public class Dir
{
    DirectoryInfo dirInfo = null;
    [STAThread]
    static void Main(string[] args)
    {
        Dir app = new Dir(Directory.GetCurrentDirectory());
    }

    public Dir(string path)
    {
        dirInfo = new DirectoryInfo(path);
    }
    public void ShowDirInfo()
    {
        Console.WriteLine("Path: {0}", dirInfo.FullName);
        Console.WriteLine("Root: {0}", dirInfo.Root.ToString());
        if (dirInfo.Parent != null) Console.WriteLine("Parent Dir: {0}", dirInfo.Parent.FullName);
        else Console.WriteLine("Parent Dir: None");
        Console.WriteLine("Attributes: {0}", dirInfo.Attributes.ToString());
        Console.WriteLine("Creation Time: {0}", dirInfo.CreationTime.ToString());
        Console.WriteLine("Last Access Time: {0}", dirInfo.LastAccessTime.ToString());
        Console.WriteLine("Last Write Time: {0}", dirInfo.LastWriteTime.ToString());

        Console.WriteLine("Num Subdirectories: {0}", dirInfo.GetDirectories().Length);
        foreach (DirectoryInfo subDir in dirInfo.GetDirectories())
            Console.WriteLine("\t{0}", subDir.Name);

        Console.WriteLine("Num Files: {0}", dirInfo.GetFiles().Length);
        foreach (FileInfo file in dirInfo.GetFiles())
            Console.WriteLine("\t{0}", file.Name);

    }

    public void Show()
    {
        Enumerate(dirInfo);
    }

    private void Enumerate(DirectoryInfo diStart)
    {
        foreach (FileSystemInfo diNext in diStart.GetFileSystemInfos())
        {
            if (diNext.GetType() == typeof(DirectoryInfo))
            {
                Console.WriteLine("< " + diNext.Name + ">");
                Enumerate((DirectoryInfo)diNext);
            }
            else
            {
                Console.WriteLine(diNext.Name);
            }
        }
    }
}

Next chapter...

What you will learn in the next chapter:

  1. Combines two strings into a path
Home » C# Tutorial » File, Path
File creation
Deleting Files
Put to recycle bin
File Exists
File moving
File size
File attribute
Set file attribute
File time change
File time
Random file name
Temporary file
Path
Directory creation
Delete directory
Path existance
Change the path
Current Path
Directory listing
Recursive Path Listing
Combine path
Calculate Directory Size
Invalid path characters
System path
Directory copy
Drive
Drive information
File access rule
File System watcher