今回のテーマ
こんにちは、サルモリです。
今回のテーマは指定フォルダにあるディレクトリとファイルを列挙する方法を紹介します。
今回紹介する方法は、列挙した内容に対して、Linqを使用する方法を紹介します。
それでは、ソースコードを見ていきましょう。
列挙するディレクトリとファイル
DドライブにExampleフォルダを作成し、下記のようにディレクトリとファイルを置きました。
D:Example
1------------1.txt
2------------2.txt
3------------3.txt
Example1-----Example1.txt
Example2-----Example2.txt
Example3-----Example3.txt
Example4-----Example4.txt
Example5-----Example5.txt
Example6-----Example6.txt
画像も載せておきます。各ディレクトリ配下に同じ名前のテキストが置いてあります。
ディレクトリ一覧の取得方法
まずはディレクトリの一覧を取得していきます。ソースコードをみていきましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
using System; using System.IO; using System.Linq; class Program { static void Main(string[] args) { var di = new DirectoryInfo(@"D:\Example"); var directories = di.EnumerateDirectories(); foreach(var directory in directories) { Console.WriteLine(directory); } } } |
出力結果
D:\Example
D:\Example
D:\Example
D:\Example\Example1
D:\Example\Example2
D:\Example\Example3
D:\Example\Example4
D:\Example\Example5
D:\Example\Example6
簡単に取得することができましたね。EnumerateDirectoriesメソッドを使用することで便利なところはLinqを自由に使用できることです。
早速、Linqを使用した例もみていきます。ディレクトリ名が5以上のディレクトリのみ取得してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
using System; using System.IO; using System.Linq; class Program { static void Main(string[] args) { var di = new DirectoryInfo(@"D:\Example"); var directories = di.EnumerateDirectories().Where(n => n.Name.Length > 5); foreach(var directory in directories) { Console.WriteLine(directory); } } } |
出力結果
D:\Example\Example1
D:\Example\Example2
D:\Example\Example3
D:\Example\Example4
D:\Example\Example5
D:\Example\Example6
想定通りにディレクトリ名が5以上のディレクトリのみ取得できましたね。
Whereメソッドについてはこちらの記事を見てください。
こちらもCHECK
-
【C# sharp Linq】Selectメソッド、Whereメソッドを解説します。
ChatGPTのAPIを使わずに自動化することが可能です。 下記の本を読めば、ChatGPT4でも料金掛からずに自動化できます!KindleUnlimited会員であれば無料で読めます。 C#言語のL ...
続きを見る
ファイル一覧の取得方法
今度はファイルの一覧を取得していきましょう。ディレクトリとほぼ同じでEnumerateFilsメソッドを使用するだけです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
using System; using System.IO; using System.Linq; class Program { static void Main(string[] args) { var di = new DirectoryInfo(@"D:\Example"); var files = di.EnumerateFiles("*.txt",SearchOption.AllDirectories); foreach(var file in files) { Console.WriteLine(file); } } } |
出力結果
D:\Example.txt
D:\Example.txt
D:\Example.txt
D:\Example\Example1\Example1.txt
D:\Example\Example2\Example2.txt
D:\Example\Example3\Example3.txt
D:\Example\Example4\Example4.txt
D:\Example\Example5\Example5.txt
D:\Example\Example6\Example6.txt
問題なく取得できましたね。EnumerateFilesメソッドでは、
第1引数に取得対象とするファイルの拡張子、
第2引数に取得対象となるディレクトリを指定しています。AllDirectoriesを指定することで、Exampleフォルダ内の全てのディレクトリを対象としています。
Linqも使用してみましょう。Takeメソッドで前から4番目までのファイル名を取得してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
using System; using System.IO; using System.Linq; class Program { static void Main(string[] args) { var di = new DirectoryInfo(@"D:\Example"); var files = di.EnumerateFiles("*.txt",SearchOption.AllDirectories).Take(4); foreach(var file in files) { Console.WriteLine(file); } } } |
出力結果
D:\Example.txt
D:\Example.txt
D:\Example.txt
D:\Example\Example1\Example1.txt
Takeメソッドについてはこちらの記事に書いてあります。
こちらもCHECK
-
【C# sharp Linq】Take、Skip、TakeWhile、SkipWhileメソッドを解説します。
ChatGPTのAPIを使わずに自動化することが可能です。 下記の本を読めば、ChatGPT4でも料金掛からずに自動化できます!KindleUnlimited会員であれば無料で読めます。 今回のテーマ ...
続きを見る
問題なくファイル名を取得することができましたね。
まとめ
今回はディレクトリ、ファイルを取得するために下記の2つのメソッドを紹介しました。
今回紹介したメソッド
- EnumerateDirectories
- EnumerateFiles
ディレクトリとファイルを取得する方法は他にもたくさんありますが、
この方法ならLinqを自由に使用できるのでオススメです。
この記事をきっかけにファイルを取得する時には検討してみてください。