2012-01-20 4 views
0

このスレッドをチェックしましたHow to get files in a relative path in C#、ディレクトリがIDEにありますが、これは私には間違っています。私はウェブサイトのアプリケーションを持って、同じレベルのフォルダから画像ファイルを取得する必要がありますimg。私はそれらを得るために、次のコードを使用することができます。相対パスを使用してC#でイメージファイルを取得するには?

DirectoryInfo path=new DirectoryInfo(@"c:\WebsiteSolution\wwwroot\Chat\img"); 
FileInfo[] images = path.GetFiles("*"); 

をしかし、私は最初の行のコードでパラメータを置き換えるために.\imgのようなものを使用したい、ということは可能ですか?

+0

アプリケーションのフォルダと比べて何ですか? –

答えて

6

相対パスを取得するには、Server.MapPathユーティリティを呼び出します。 Application.ExecutablePathのようなものを - -

DirectoryInfo path = Server.MapPath("~\Chat\img"); 
-1

あなたがアンカーを見つける必要があり、その後、あなたのイメージディレクトリに到達するためにPath.Combine()とそのアンカーを使用します。

あなたApplication.ExecutablePathがあった場合:@"c:\WebSiteSolution\wwwroot\chat\code"、その後、あなたが苦労良いアンカーを見つけるのを持っている場合は、考慮すべき束がありますstring imgPath = Path.Combine(Application.ExecutablePath, @"..\img");

を使用することができます。実行アセンブリのパスは、Assembly.GetExecutingAssembly().Location

+0

ウェブアプリケーション用です。 – Lloyd

+0

IISでホストされているASP.NETアプリケーションにはこのアプローチを使用しません。まず、ExecutablePathは、Windowsフォルダの下で実行可能なものになるでしょう。また、私はIISがアセンブリのシャドーコピーを作成すると信じています。私はそれがAssembly.Locationプロパティにどのように影響するのか分かりませんが、その値はあなたが期待するものではないかもしれません。 HttpServerUtility.MapPathを使用すると、仮想パスの物理ファイルパスを取得する標準的な方法です。 –

+0

ヒントをありがとう。私はこの問題をデスクトップアプリケーションのプログラミングに多く取り組まなければならなかったが、私はあまりWebプログラミングをしていない。 – antiduh