DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

ファイル、ディレクトリが存在するか調べる

System.IO.File.Existsメソッドを使用することにより、ファイルが存在しているか調べることができます。File.ExistsメソッドがTrueを返せば、ファイルが存在します。

同様にディレクトリがあるか調べるには、System.IO.Directory.Existsメソッドを使います。

File.Existsメソッドでフォルダの存在を調べることはできません。File.Existsメソッドに存在するフォルダを指定しても結果はFalseになります。また、パス名として無効な文字列を指定しても、Falseです。さらには、たとえファイルが存在しても、ファイルを読み取るのに十分なアクセス許可を持たない場合も、Falseです。

Directory.Existsメソッドに指定するフォルダ名は、パスの最後に"\"があってもなくても、"C:"のようであっても、問題ありません。

次の例では、ファイル"C:\test.txt"が存在しているかを調べています。

VB.NET
コードを隠すコードを選択
Dim fileName As String = "C:\test.txt"
If System.IO.File.Exists(fileName) Then
    MessageBox.Show("'" + fileName + "'は存在します。")
Else
    MessageBox.Show("'" + fileName + "'は存在しません。")
End If
C#
コードを隠すコードを選択
string fileName = @"C:\test.txt";
if (System.IO.File.Exists(fileName))
{
    MessageBox.Show("'" + fileName + "'は存在します。");
}
else
{
    MessageBox.Show("'" + fileName + "'は存在しません。");
}
補足:.NET Framework 2.0以降のVB.NETでは、My.Computer.FileSystem.FileExistsメソッドでファイルの存在を、My.Computer.FileSystem.DirectoryExistsメソッドでフォルダの存在を確認することもできます。
  • 履歴:
  • 2007/2/19 .NET Framework 2.0に関する記述を追加。
  • 2010/9/15 コードを書き換えた。説明を追加。
  • 2011/5/31 C#のサンプルがディレクトリの存在を調べるコードになっていたのを修正。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • Windows Vista以降でUACが有効になっていると、ファイルへの書き込みに失敗する可能性があります。詳しくは、こちらをご覧ください。
  • .NET Tipsをご利用いただく際は、注意事項をお守りください。