ゲーマーときどきエンジニア

基本ゲーム記事を書いて、ときどき考えを発信するエンジニアのブログです!

【C#】ディレクトリ(フォルダ)の存在チェックをするDirectory.Existsメソッドを解説します

こんにちは。たいら(@tairaengineer2)です。
この記事では、C#ディレクトリ(フォルダ)存在チェックをするDirectory.Existsメソッドについて解説します。

スポンサーリンク

 

前提条件

この記事では、Visual Studio 2017 Communityを使っています。
インストールの仕方は、下の記事をご参考ください。

www.tairax.com

Directory.Existsメソッドとは

Directory.Existsメソッドとは、その名の通りディレクトリ(フォルダ)の存在チェックをするメソッドです。

Directory.Exists(String) メソッド
名前空間:System.IO
アセンブリ:System.IO.FileSystem.dll, mscorlib.dll, netstandard.dll
指定したパスがディスク上の既存のディレクトリを参照しているかどうかを確認します。
public static bool Exists (string path);

Directory.Exists(String) メソッド (System.IO) | Microsoft Docsから引用させて頂きました

このメソッドはusingは

using System.IO;

を使います。
使い方は

f:id:Tairax:20200310204802p:plain

  • 第1引数:目的のディレクトリまでのパスを指定

です。
相対パスを注意した方がよいと書いた理由は、後ほど書きます。
絶対パスと相対パスについては、こちらの記事をご参考ください。

www.tairax.com

先ほど例に出したパスの前に【@】がついていますが、これは逐語的文字列というものです。

C# のキーワードを識別子として使用できるようにする。
コード要素のプレフィックスとして @ 文字を使用すると、その要素はC# のキーワードではなく、識別子としてコンパイラに解釈されます。

@ - C# リファレンス | Microsoft Docsから引用させて頂きました

Directory.Existsメソッドでディレクトリの存在チェック

実際にDirectory.Existsメソッドを使ってディレクトリの存在チェックをして、結果をコンソール上に表示します。
解説するパターンは

  1. 相対パスで指定して存在チェック
  2. 絶対パスで指定して存在チェック

の2パターンを解説します。

コンソールプロジェクトを作成するやり方は下の記事をご参考ください。

www.tairax.com

プログラムを作成したあと、ビルドをするやり方はこちらの記事をご参考ください。

www.tairax.com

 

スポンサーリンク

 

パターンその1:相対パスで指定して存在チェック

解説に使うプログラムは、Directory.Existsメソッドを使ってディレクトリの存在チェックをするというシンプルなものです。
先ほど書いた通り、第1引数で指定するパスは相対パスです。

C#サンプルコード

sing System;
using System.IO;

namespace ConsoleApp1
{
    /// <summary>
    /// Directory.Existsのサンプル(相対パス)
    /// </summary>
    class Program
    {
        /// <summary>
        /// メイン
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            // 成功パターン
            string exitsPath = @"./sample";
            if (Directory.Exists(exitsPath))
            {
                Console.WriteLine(exitsPath + "は存在します");
            }
            else
            {
                Console.WriteLine(exitsPath + "は存在しません");
            }

            // 失敗パターン
            string noPath = @"./test";
            if (Directory.Exists(noPath))
            {
                Console.WriteLine(noPath + "は存在します");
            }
            else
            {
                Console.WriteLine(noPath + "は存在しません");
            }
        }
    }
}

実行結果

では、実行しますが、その前に

  • 存在チェックするディレクトリがどこにあるのか
  • ディレクトリがあるかどうか

を確認します。
今回は存在チェックするディレクトリを相対パスで指定しています。

  • ./sample
  • ./test

の意味としては、実行ファイルと同じ場所に格納する必要があります。
結論から言うとディレクトリは、ビルドしてexeファイルが出来る場所に置きます。

f:id:Tairax:20200310210412p:plain

さきほど相対パスで書く場合、注意した方がよいと書いたのはこれが理由です。
ビルドして実行するときは、exeファイルを使います。
ソリューションプロジェクトとexeファイルがある場所は異なります。
なので相対パスで指定したディレクトリは、ソリューションプロジェクトがある場所ではなく、ビルドしてexeファイルが出来る場所に置く必要があります。

【sample】だけがあることを確認できました。
では、実行します。

f:id:Tairax:20200310210611p:plain

./sampleは存在します
./testは存在しません
続行するには何かキーを押してください . . .
  • sample:存在する
  • test:存在しない

これらが確認できました!

パターンその2:絶対パスで指定して存在チェック

解説に使うプログラムは、Directory.Existsメソッドを使ってディレクトリの存在チェックをするというシンプルなものです。
先ほど書いた通り、第1引数で指定するパスは絶対パスです。

C#サンプルコード

using System;
using System.IO;

namespace ConsoleApp1
{
    /// <summary>
    /// Directory.Existsのサンプル(絶対パス)
    /// </summary>
    class Program
    {
        /// <summary>
        /// メイン
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            // 成功パターン
            string exitsPath = @"C:\test\sample";
            if (Directory.Exists(exitsPath))
            {
                Console.WriteLine(exitsPath + "は存在します");
            }
            else
            {
                Console.WriteLine(exitsPath + "は存在しません");
            }

            // 失敗パターン
            string noPath = @"C:\test\test";
            if (Directory.Exists(noPath))
            {
                Console.WriteLine(noPath + "は存在します");
            }
            else
            {
                Console.WriteLine(noPath + "は存在しません");
            }
        }
    }
}

実行結果

では、実行しますが、その前に

  • 存在チェックするディレクトリがどこにあるのか
  • ディレクトリがあるかどうか

を確認します。
今回は存在チェックするディレクトリを絶対パスで指定しています。

f:id:Tairax:20200310211149p:plain

【sample】だけがあることを確認できました。
では、実行します。

f:id:Tairax:20200310211319p:plain

C:\test\sampleは存在します
C:\test\testは存在しません
続行するには何かキーを押してください . . .
  • sample:存在する
  • test:存在しない

これらが確認できました!

 

スポンサーリンク

 

まとめ:Directory.Existsメソッドを使ってディレクトリの存在チェックをしてみよう!

以上がディレクトリの存在チェックをするDirectory.Existsメソッドの解説です。
まとめなので、もう1度Directory.Existsメソッドの使い方を載せておきます。

f:id:Tairax:20200310204802p:plain

あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ

 

ほかにもC#解説記事を書いてます。
よければご参考ください。

【C#】ファイルを削除する、Deleteメソッドを解説します

【C#】ファイルに上書きする、WriteAllTextメソッドを解説します

今までブログで解説したC#の解説まとめ記事はこちらをご参考ください。

【C#】ブログで書いた文法記事のまとめ