カテゴリ: C# 更新日: 2025/11/05

C#でディレクトリを作成・削除・一覧取得する方法(Directoryクラス)

C#でディレクトリを作成・削除・一覧取得する方法(Directoryクラス)
C#でディレクトリを作成・削除・一覧取得する方法(Directoryクラス)

先生と生徒の会話形式で理解しよう

生徒

「先生、C#でフォルダを作ったり消したりすることってできますか?」

先生

「もちろんできますよ。C#にはDirectoryクラスという便利なクラスがあって、フォルダ(ディレクトリ)の操作を簡単に行うことができます。」

生徒

「ディレクトリってフォルダのことなんですね。どうやって作るんですか?」

先生

「そうです。では、まずはディレクトリを作成する方法から見ていきましょう。」

1. Directoryクラスとは?

1. Directoryクラスとは?
1. Directoryクラスとは?

Directoryクラスは、C#の標準ライブラリに用意されている、フォルダ(ディレクトリ)を操作するためのクラスです。ファイルを扱うFileクラスと似ていますが、こちらは「ファイル」ではなく「フォルダ」に関する操作を行います。

このクラスを使うと、次のようなことが簡単にできます。

  • フォルダを作成する
  • フォルダを削除する
  • フォルダの一覧を取得する
  • フォルダの存在を確認する

たとえば、Windowsでエクスプローラーを開いて「新しいフォルダ」を作る操作を、C#でプログラム的に行えるようになるイメージです。

2. ディレクトリを作成する

2. ディレクトリを作成する
2. ディレクトリを作成する

ディレクトリ(フォルダ)を作るには、Directory.CreateDirectory()メソッドを使います。このメソッドは指定したパスにフォルダを作成します。もしすでに同じ名前のフォルダが存在していても、エラーにはならずにスルーされます。


using System;
using System.IO;

class Program
{
    static void Main()
    {
        string folderPath = @"C:\ExampleFolder";
        Directory.CreateDirectory(folderPath);
        Console.WriteLine("ディレクトリを作成しました。");
    }
}

ディレクトリを作成しました。

このように実行すると、「C:\ExampleFolder」というフォルダが作成されます。パスは環境に合わせて変更してください。

3. ディレクトリを削除する

3. ディレクトリを削除する
3. ディレクトリを削除する

ディレクトリを削除するには、Directory.Delete()メソッドを使います。このとき注意が必要なのは、「中にファイルやサブフォルダがある場合」は削除できないという点です。


using System;
using System.IO;

class Program
{
    static void Main()
    {
        string folderPath = @"C:\ExampleFolder";
        if (Directory.Exists(folderPath))
        {
            Directory.Delete(folderPath);
            Console.WriteLine("ディレクトリを削除しました。");
        }
        else
        {
            Console.WriteLine("指定されたディレクトリは存在しません。");
        }
    }
}

ディレクトリを削除しました。

ただし、フォルダの中にファイルやサブフォルダがある場合には、次のように第2引数にtrueを指定して削除することができます。


Directory.Delete(folderPath, true);

これでフォルダの中身もまとめて削除されます。削除操作は取り消せないため、誤って大事なフォルダを消さないように注意してください。

4. ディレクトリが存在するか確認する

4. ディレクトリが存在するか確認する
4. ディレクトリが存在するか確認する

フォルダが存在するかどうかをチェックするには、Directory.Exists()メソッドを使います。戻り値はtrueまたはfalseで返ってきます。


if (Directory.Exists(@"C:\ExampleFolder"))
{
    Console.WriteLine("フォルダは存在します。");
}
else
{
    Console.WriteLine("フォルダは存在しません。");
}

フォルダは存在します。

このように確認しておくことで、「フォルダがないのに削除を実行してエラーになった」などのトラブルを防ぐことができます。

5. ディレクトリ内のフォルダ一覧を取得する

5. ディレクトリ内のフォルダ一覧を取得する
5. ディレクトリ内のフォルダ一覧を取得する

次に、指定したフォルダの中にあるフォルダ一覧を取得してみましょう。これはDirectory.GetDirectories()メソッドを使います。


using System;
using System.IO;

class Program
{
    static void Main()
    {
        string rootPath = @"C:\";
        string[] directories = Directory.GetDirectories(rootPath);

        foreach (string dir in directories)
        {
            Console.WriteLine(dir);
        }
    }
}

C:\Program Files
C:\Users
C:\Windows
...

このようにして、指定したフォルダ内のサブフォルダ一覧を取得できます。もしファイルも含めて一覧表示したい場合は、Directory.GetFiles()を使います。

6. ディレクトリ内のファイルとフォルダをまとめて一覧表示

6. ディレクトリ内のファイルとフォルダをまとめて一覧表示
6. ディレクトリ内のファイルとフォルダをまとめて一覧表示

実際の開発では、「このフォルダの中にどんなファイルやサブフォルダがあるのか」をまとめて確認したいことがあります。その場合は、Directory.GetDirectories()Directory.GetFiles()を組み合わせます。


using System;
using System.IO;

class Program
{
    static void Main()
    {
        string folderPath = @"C:\ExampleFolder";

        Console.WriteLine("【サブフォルダ一覧】");
        foreach (string dir in Directory.GetDirectories(folderPath))
        {
            Console.WriteLine(dir);
        }

        Console.WriteLine("【ファイル一覧】");
        foreach (string file in Directory.GetFiles(folderPath))
        {
            Console.WriteLine(file);
        }
    }
}

【サブフォルダ一覧】
C:\ExampleFolder\Sub1
C:\ExampleFolder\Sub2
【ファイル一覧】
C:\ExampleFolder\data.txt
C:\ExampleFolder\image.png

このようにすると、フォルダ内の構造を把握しやすくなります。プログラムのログ出力やファイル管理ツールなどにも応用できます。

7. パスの結合と安全なフォルダ指定

7. パスの結合と安全なフォルダ指定
7. パスの結合と安全なフォルダ指定

フォルダのパスを文字列で直接書くよりも、Path.Combine()メソッドを使って安全に結合するのが良い習慣です。これにより、区切り文字(\)の入れ忘れや重複を防げます。


string basePath = @"C:\ExampleFolder";
string subPath = "SubFolder";
string fullPath = Path.Combine(basePath, subPath);
Console.WriteLine(fullPath); // C:\ExampleFolder\SubFolder

この方法を使うと、複雑なフォルダ構造でも正しく扱えるようになります。

8. まとめ(操作の流れ)

8. まとめ(操作の流れ)
8. まとめ(操作の流れ)

ここまでで学んだDirectoryクラスの操作を整理すると、次のようになります。

  • 作成: Directory.CreateDirectory()
  • 削除: Directory.Delete()
  • 存在確認: Directory.Exists()
  • 一覧取得: Directory.GetDirectories() / Directory.GetFiles()

これらを組み合わせることで、C#でフォルダ操作を自動化したり、ファイル管理ツールのようなアプリを作る基礎が身につきます。

カテゴリの一覧へ
新着記事
C#で複数ファイルをまとめて操作する方法(foreach・LINQ)をやさしく解説!
C#のインターフェースとは?クラス設計を柔軟にする基本技術
C#のコンストラクタの役割と使い方!オブジェクト初期化の基本
COBOLでデータベース接続を理解しよう!初心者でもわかる基本の考え方
人気記事
No.1
Java&Spring記事人気No1
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.2
Java&Spring記事人気No2
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
No.3
Java&Spring記事人気No3
C#の数値型をマスターしよう!int・double・decimalの違いと使い方
No.4
Java&Spring記事人気No4
COBOLのCOPY句の使い方を完全ガイド!初心者でもわかる共通部品の再利用方法