【C#】ディレクトリの扱いについて

ディレクトリの有無

 * Directory.Exists() を使用する

ディレクトリ内のファイル総数

実現方法1

 * Directory.GetFiles を利用して実装する
サンプル
http://dobon.net/vb/dotnet/file/getfiles.html
を参考
string[] files = System.IO.Directory.GetFiles(
                @"C:\test", "*", System.IO.SearchOption.AllDirectories);
int total = files.Length;

実現方法2

 * DirectoryInfo.GetFiles()のCount()を利用して実装する
サンプル
DirectoryInfo directoryInfo = new DirectoryInfo(@"C:\test")

int totalfileNo = directoryInfo.GetFiles().Count();

ディレクトリの作成

 * Directory.CreateDirectory() を使用する

ディレクトリの削除

 * Directory.Delete()又は、DirectoryInfo.Delete() を使用する

サンプル

指定したディレクトリおよびその配下のサブディレクトリ、ファイルを根こそぎ削除
#region ディレクトリ削除処理
/// <summary>
/// 指定したディレクトリ、その配下のファイルおよびサブディレクトリ、全てを削除する。
/// </summary>
/// <param name="folderPath">削除するディレクトリのパス</param>
/// <remarks>
/// [参考URL]http://jeanne.wankuma.com/tips/csharp/directory/deletesurely.html
/// </remarks>
public void DeleteDirectory(string folderPath)
{
    if (Directory.Exists(folderPath))
    {
        this.DeleteDirectory(new System.IO.DirectoryInfo(folderPath));
    }
}

public void DeleteDirectory(System.IO.DirectoryInfo directoryInfo)
{
    // すべてのファイルの読み取り専用属性を解除する
    foreach (System.IO.FileInfo fileInfo in directoryInfo.GetFiles())
    {
        if ((fileInfo.Attributes & System.IO.FileAttributes.ReadOnly) == System.IO.FileAttributes.ReadOnly)
        {
            fileInfo.Attributes = System.IO.FileAttributes.Normal;
        }

        // ファイルを削除する
        fileInfo.Delete();
    }

    // サブディレクトリ内の読み取り専用属性を解除する (再帰)
    foreach (System.IO.DirectoryInfo subDirectoryInfo in directoryInfo.GetDirectories())
    {
        this.DeleteDirectory(subDirectoryInfo);
    }

    // このディレクトリの読み取り専用属性を解除する
    if ((directoryInfo.Attributes & System.IO.FileAttributes.ReadOnly) == System.IO.FileAttributes.ReadOnly)
    {
        directoryInfo.Attributes = System.IO.FileAttributes.Directory;
    }

    // このディレクトリを削除する
    directoryInfo.Delete(true);
}
#endregion