2016-11-04 2 views
0

パス(相対パスでもよい)が与えられている場合、そのパスがディレクトリかguidかファイルかどうかをどのように確認できますか?彼らは存在しないかもしれませんが、それは私に解決策を見つけ出すのが難しくなっています。C#相対パスがディレクトリかGUIDかファイルかを確認してください

public bool IsDirectory(string path) 
    { 
     var extension = Path.GetExtension(path); 

     return string.IsNullOrEmpty(extension); 
    } 

しかし、私はこのパスは、一般的にも、GUIDへのパスとなりますので、上記の不正確になることを発見:

私の以前のソリューションは、パスがそうのように拡張したかどうかを確認することでした。

これらのすべてのケースをチェックするための関数を書くより良い方法はありますか?

+3

は 'パスがディレクトリ、またはGUIDである、またはこれらのもののfile' 1が他 – Jonesopolis

+1

が好きされていない場合、あなたは時々あなたは拡張子のないただのGUIDされたファイル名を持っていることを言っているチェック!パスはファイルまたはディレクトリのいずれかであるため、Guidsがパスにどのように関係しているかは不明です。 – juharr

+1

このリンクはあなたを助けます:[http://stackoverflow.com/questions/1395205/better-way-to-check-if-a-path-is-a-file-or-a-directory](http:/) /stackoverflow.com/questions/1395205/better-way-to-check-if-a-path-is-a-file-or-a-directory) – Kymuweb

答えて

3

これは、ファイルまたはパスが最初にguidを解析しようとしていないかどうかをチェックします。

if(File.Exists(path)) 
{ 
    FileAttributes attr = File.GetAttributes(path); 

    if (attr.HasFlag(FileAttributes.Directory)) 
     MessageBox.Show("Its a directory"); 
    else 
     MessageBox.Show("Its a file"); 
} 
else 
{ 
    Guid guid; 

    if (Guid.TryParse(path, out guid)) 
     MessageBox.Show("Its a Guid"); 
} 
関連する問題