C#を使用してディレクトリ内のすべてのファイルとサブディレクトリを削除します
ディレクトリを指定したら、C#を使用してディレクトリに存在するすべてのファイルとサブディレクトリを削除します。
この問題には2つのバリエーションがあります。最初のバリエーションでは、ルートディレクトリとともに、指定されたディレクトリからすべてのファイルとサブディレクトリを削除します。 2番目のバリエーションでは、すべてのファイルとサブディレクトリを削除しますが、ルートディレクトリは保持します。
1.ルートディレクトリを削除します
指定したディレクトリとそのすべてのサブディレクトリを削除するには、 Directory.Delete() 方法。次の例は、その使用法を示しています。このメソッドの2番目の引数は、サブディレクトリとファイルを削除するかどうかを示します。
1 2 3 4 5 6 7 8 9 10 11 |
using System.IO; public class Example { public static void Main() { string path = @"C:\some\path"; Directory.Delete(path, true); } } |
のインスタンスを使用することもできます DirectoryInfo
サブディレクトリとファイルを削除するクラス。それは DirectoryInfo.Delete()
メソッドは、 Directory.Delete()
上記の方法。
1 2 3 4 5 6 7 8 9 10 11 12 |
using System.IO; public class Example { public static void Main() { string path = @"C:\some\path"; DirectoryInfo directory = new DirectoryInfo(path); directory.Delete(true); } } |
2.ルートディレクトリを保持します
ディレクトリを削除せずにすべてのファイルとサブディレクトリを削除するには、すべてのファイル/サブディレクトリをループして個別に削除するという考え方です。使用できます GetFiles と GetDirectories() 既存のファイルとディレクトリを取得するメソッド。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
using System.IO; public class Example { public static void Main() { string path = @"C:\Pending"; DirectoryInfo directory = new DirectoryInfo(path); foreach (FileInfo file in directory.GetFiles()) { file.Delete(); } foreach (DirectoryInfo dir in directory.GetDirectories()) { dir.Delete(true); } } } |
使用することもできます EnumerateFiles と EnumerateDirectories() 既存のファイルとディレクトリを列挙するメソッド。これは、多くのファイルやディレクトリを操作する場合により効率的です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
using System.IO; public class Example { public static void Main() { string path = @"C:\some\path"; DirectoryInfo directory = new DirectoryInfo(path); foreach (FileInfo file in directory.EnumerateFiles()) { file.Delete(); } foreach (DirectoryInfo dir in directory.EnumerateDirectories()) { dir.Delete(true); } } } |
これは、LINQを使用して実行することもできます ForEach()
foreachループの代わりにメソッド:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
using System.IO; using System.Linq; public class Example { public static void Main() { string path = @"C:\some\path"; DirectoryInfo directory = new DirectoryInfo(path); directory.EnumerateFiles() .ToList().ForEach(f => f.Delete()); directory.EnumerateDirectories() .ToList().ForEach(d => d.Delete(true)); } } |
これは、最初に指定されたディレクトリとそのすべてのサブディレクトリを使用して削除する別の方法です Directory.Delete() メソッドを実行してから、ディレクトリを再作成します。これにより、ルートディレクトリのいくつかの属性が完全に消去されることに注意してください。
1 2 3 4 5 6 7 8 9 10 11 12 |
using System.IO; public class Example { public static void Main() { string path = @"C:\some\path"; Directory.Delete(path, true); Directory.CreateDirectory(path); } } |
これで、C#を使用してディレクトリ内のすべてのファイルとサブディレクトリを削除できます。