カテゴリ: C# 更新日: 2025/12/01

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#のDirectoryクラスは、開発において欠かせないディレクトリ管理の基礎をしっかりと支えてくれる、とても大切な仕組みです。プログラムからフォルダを作成したり削除したりすることで、手作業では難しい大量のファイル整理や自動化処理がずっと簡単になります。特に、業務システムやデータ管理、ログ収集のように日常的に大量のファイルが扱われる場面では、ディレクトリ構造を正しく操作できることが大きな強みになります。 また、C#のフォルダ操作はシンプルなコードで記述できるため、初心者でも取り組みやすい点が特徴です。Directory.CreateDirectory()でフォルダを作成し、Directory.Delete()で削除し、そしてDirectory.GetDirectories()Directory.GetFiles()で一覧取得する流れは、とても理解しやすく直感的です。これらはすべてプログラムを構成する大事な要素であり、フォルダ管理ができるだけで作れるアプリケーションの幅が一気に広がります。

安全なフォルダ操作とパス結合の活用

ディレクトリ操作をする際には、誤ったフォルダを削除してしまうなどの危険を防ぐために、Directory.Exists()による事前の存在確認が重要になります。存在確認を丁寧に行うことで、予期せぬ削除やエラーを事前に防げるため、安全で安定したフォルダ管理プログラムを実現できます。 また、フォルダパスを結合する際には、Path.Combine()を使うことで、区切り文字の誤りや環境依存の問題を避け、より信頼性の高いコードが書けます。パスの扱いはとても繊細で、小さなミスが大きなエラーにつながるため、Path.Combine()のようなメソッドを活用することが自然と品質向上につながります。

ディレクトリ構造の把握と実務での応用

GetDirectories()GetFiles()を組み合わせることで、指定したフォルダの中に存在するサブフォルダやファイルをまとめて一覧表示できます。これは、ログ管理ツール・バックアップツール・ファイル整理アプリなど、実務で役立つさまざまなプログラムの基礎となります。 フォルダの全体構造を把握し、必要に応じて新しいフォルダを作ったり不要なフォルダを削除したりすることで、柔軟なファイル運用が可能になります。こうしたディレクトリ操作を学んでおくと、応用範囲は大きく広がります。

サンプルコード(まとめ用)


using System;
using System.IO;

class Program
{
    static void Main()
    {
        string basePath = @"C:\ExampleFolder";
        string subPath = "Backup";
        string fullPath = Path.Combine(basePath, subPath);

        // フォルダ作成
        Directory.CreateDirectory(fullPath);

        // フォルダ存在確認
        if (Directory.Exists(fullPath))
        {
            Console.WriteLine("フォルダが存在します。");
        }

        // サブフォルダ一覧表示
        Console.WriteLine("【サブフォルダ一覧】");
        foreach (string d in Directory.GetDirectories(basePath))
        {
            Console.WriteLine(d);
        }

        // 削除(中身ごと)
        Directory.Delete(fullPath, true);
        Console.WriteLine("作成したフォルダを削除しました。");
    }
}

このサンプルのように、作成・確認・一覧取得・削除という一連の流れをまとめて理解しておくことで、C#によるフォルダ操作の基礎がしっかり身につきます。今後もっと複雑なファイル操作や自動化処理に挑戦するときにも、この知識が役立ちます。

先生と生徒の振り返り会話

生徒

「先生、C#でフォルダを作ったり削除したり一覧を出したり、全部つながって理解できた気がします!」

先生

「それは良かったね。Directoryクラスは非常に便利だから、実務でもよく使われるよ。今学んだ操作を組み合わせれば、ファイル管理の自動化も簡単にできるようになるよ。」

生徒

Path.Combine()を使ってパスを結合するのも大事なんですね。手打ちだとミスしそうですし。」

先生

「その通り。パスのミスは意外と多いから、正しい方法を身につけておくと安心だよ。フォルダ一覧の取得もできるようになったし、これでファイル管理ツールの基礎はバッチリだね。」

生徒

「はい!これでC#のディレクトリ操作がしっかり理解できました。もっといろいろ作ってみます!」

カテゴリの一覧へ
新着記事
New1
C#
C#のデフォルト引数と名前付き引数の使い方を解説!初心者でも安心のやさしい入門
New2
C#
C#のオブジェクト初期化子を完全ガイド!初心者でもわかる便利な使い方
New3
COBOL
COBOLの帳票出力と編集を完全マスター!条件付き表示で分かりやすい書類を作る方法
New4
COBOL
COBOLの帳票出力を完全攻略!数値項目のカンマ・小数点編集例を徹底解説
人気記事
No.1
Java&Spring記事人気No1
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.2
Java&Spring記事人気No2
C#
C#でJSONファイルを読み書きする方法(JsonSerializer・Newtonsoft.Json)
No.3
Java&Spring記事人気No3
C#
C#のLINQクエリ構文の書き方と基本操作をマスターしよう
No.4
Java&Spring記事人気No4
C#
C#でswitch式を使う方法!C# 8.0以降の新機能を解説
No.5
Java&Spring記事人気No5
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.6
Java&Spring記事人気No6
C#
C#のLINQ(リンク)とは?基本概念とデータ操作を初心者向けに徹底解説!
No.7
Java&Spring記事人気No7
C#
C#の非同期処理とUIスレッドをマスター!WPF/WinFormsでアプリが止まる問題を解決
No.8
Java&Spring記事人気No8
C#
C#のCancellationTokenを使ったキャンセル処理を完全ガイド!非同期処理を安全に止める方法