ファイルなの?ディレクトリなの?の判別方法 †System.IO.File.Exists、System.IO.Directory.Existsを使って、ファイルなのかディレクトリなのか?を 参考サイト †関連記事 †File.GetAttributes(String)メソッド †File.GetAttributes(String)メソッドの引数にある、Stringにファイル属性を調べたいパスを文字列(String)で指定します。 サンプルコード †File.GetAttributes、FileAttributesを使って、ファイルなのかディレクトリなのか?を判別するサンプルコードを以下に記します。 C#サンプルコード †using System; namespace GetAttrCS { class Program { static void Main(string[] args) { String file = @"C:\Windows\System32\drivers\etc\hosts"; String dir = @"C:\Windows"; String notExist = @"C:\path\to"; Console.WriteLine(file + ":" + GetAttr(file)); Console.WriteLine(dir + ":" + GetAttr(dir)); Console.WriteLine(notExist + ":" + GetAttr(notExist)); } static String GetAttr(String pathto) { String result = ""; System.IO.FileAttributes attr ; try { attr = System.IO.File.GetAttributes(pathto); if ((attr & System.IO.FileAttributes.Directory) == System.IO.FileAttributes.Directory) { result = "Directory"; } else if((attr & System.IO.FileAttributes.Archive) == System.IO.FileAttributes.Archive) { result = "Archive file"; } else if ((attr & System.IO.FileAttributes.Normal) == System.IO.FileAttributes.Normal) { result = "Normal file"; } else { result = "unknown"; } } catch (Exception) { result = "error"; } return result; } } } Visual Basic(VB)サンプルコード †Module Module1 Sub Main() Dim file As String = "C:\Windows\System32\drivers\etc\hosts" Dim dir As String = "C:\Windows" Dim notExist As String = "C:\path\to" Console.WriteLine(file & ":" & GetAttr(file)) Console.WriteLine(dir & ":" & GetAttr(dir)) Console.WriteLine(notExist & ":" & GetAttr(notExist)) End Sub Function GetAttr(pathto As String) As String Dim result As String = "" Dim attr As System.IO.FileAttributes Try attr = System.IO.File.GetAttributes(pathto) If ((attr And System.IO.FileAttributes.Directory) = System.IO.FileAttributes.Directory) Then result = "Directory" ElseIf ((attr And System.IO.FileAttributes.Archive) = System.IO.FileAttributes.Archive) Then result = "Archive file" ElseIf ((attr And System.IO.FileAttributes.Normal) = System.IO.FileAttributes.Normal) Then result = "Normal file" Else result = "unknown" End If Catch ex As Exception result = "error" End Try Return result End Function End Module 実行結果 †実行結果のキャプチャになります。 以上、System.IO.File.GetAttributesメソッドを使ってファイルorディレクトリ判別のサンプルコードの紹介でした。 |