8651


現在実行しているEXEファイルと検索対象フォルダであるNameは、同じ階層にあります。  
そして、Nameフォルダ内にある、1つのファイル(ファイル名はランダム)を相対パスで取得したいのですが、取得することが出来ません。

現在のC#での実装は

[code]

    var file = Directory.GetFiles("Name","*.DAT");
    
[/code]

としており、var fileにはなにも入らない状態です。  
解決方法の分かる方がいましたら、ご教授をお願いします。


CC BY-SA 3.0
2015-04-01T09:40:29.050
8648
2015-04-01T10:40:58.947
7626
question
c#
C# 相対パスでファイル検索をしたい


Exeのディレクトリを取得するということで良いんでしょうか

[code]

    var file = Directory.GetFiles(Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "Name"), "*.DAT");
    
[/code]

とか、

[code]

    var file = Directory.GetFiles(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "Name"), "*.DAT");
    
[/code]


CC BY-SA 3.0
2015-04-01T09:57:22.037
8650
2015-04-01T09:57:22.037
7740
8648
answer


階層を特に限定しない場合、相対パスの解決には`System.Uri`を使用します。

[code]

    var dirPath = new Uri(new Uri(Assembly.GetExecutingAssembly().Location), "./Name").LocalPath;
    
[/code]


CC BY-SA 3.0
2015-04-01T10:40:58.947
8651
2015-04-01T10:40:58.947
5750
8648
answer