C#でディレクトリを作成・削除・一覧取得する方法(Directoryクラス)
生徒
「先生、C#でフォルダを作ったり消したりすることってできますか?」
先生
「もちろんできますよ。C#にはDirectoryクラスという便利なクラスがあって、フォルダ(ディレクトリ)の操作を簡単に行うことができます。」
生徒
「ディレクトリってフォルダのことなんですね。どうやって作るんですか?」
先生
「そうです。では、まずはディレクトリを作成する方法から見ていきましょう。」
1. Directoryクラスとは?
Directoryクラスは、C#の標準ライブラリに用意されている、フォルダ(ディレクトリ)を操作するためのクラスです。ファイルを扱うFileクラスと似ていますが、こちらは「ファイル」ではなく「フォルダ」に関する操作を行います。
このクラスを使うと、次のようなことが簡単にできます。
- フォルダを作成する
- フォルダを削除する
- フォルダの一覧を取得する
- フォルダの存在を確認する
たとえば、Windowsでエクスプローラーを開いて「新しいフォルダ」を作る操作を、C#でプログラム的に行えるようになるイメージです。
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. ディレクトリを削除する
ディレクトリを削除するには、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. ディレクトリが存在するか確認する
フォルダが存在するかどうかをチェックするには、Directory.Exists()メソッドを使います。戻り値はtrueまたはfalseで返ってきます。
if (Directory.Exists(@"C:\ExampleFolder"))
{
Console.WriteLine("フォルダは存在します。");
}
else
{
Console.WriteLine("フォルダは存在しません。");
}
フォルダは存在します。
このように確認しておくことで、「フォルダがないのに削除を実行してエラーになった」などのトラブルを防ぐことができます。
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. ディレクトリ内のファイルとフォルダをまとめて一覧表示
実際の開発では、「このフォルダの中にどんなファイルやサブフォルダがあるのか」をまとめて確認したいことがあります。その場合は、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. パスの結合と安全なフォルダ指定
フォルダのパスを文字列で直接書くよりも、Path.Combine()メソッドを使って安全に結合するのが良い習慣です。これにより、区切り文字(\)の入れ忘れや重複を防げます。
string basePath = @"C:\ExampleFolder";
string subPath = "SubFolder";
string fullPath = Path.Combine(basePath, subPath);
Console.WriteLine(fullPath); // C:\ExampleFolder\SubFolder
この方法を使うと、複雑なフォルダ構造でも正しく扱えるようになります。
8. まとめ(操作の流れ)
ここまでで学んだDirectoryクラスの操作を整理すると、次のようになります。
- 作成:
Directory.CreateDirectory() - 削除:
Directory.Delete() - 存在確認:
Directory.Exists() - 一覧取得:
Directory.GetDirectories()/Directory.GetFiles()
これらを組み合わせることで、C#でフォルダ操作を自動化したり、ファイル管理ツールのようなアプリを作る基礎が身につきます。