2

string[] files = System.IO.Directory.GetFiles("~/Pictures/");プログラム内のフォルダで画像ファイルを検索するために使用しようとして います。これは後で画像ボックスに表示する画像をランダムに選択するために使用されます。メソッドが 'C:\Program Files (x86)\Common Files\Microsoft Shared を検索しているため、~/Pictures を検索しようとするとエラーが発生します。 \DevServer\10.0\~\Pictures\'. 代わりは。「〜」は、プログラムディレクトリに表示するつもりではないですか?プログラムがインストールされるまでそれがどうなるか分からない場合、プログラム ディレクトリでそれをどのように見えるようにしますか? どんな助けでも大歓迎です!!

4

4 に答える 4

5

チルダ パスは、現在実行中の asp.net アプリケーションのルートを表す asp.net コンストラクトです。asp.net コンテキストの外では意味がありません。Directory.GetFiles はそれを操作する方法を知りません。GetFiles、通常のファイルシステム パスを操作する方法を知っています。問題は次のようになります: asp.net の相対パスを、GetFiles が使用できるパスに変換するにはどうすればよいでしょうか。答えはHttpContext.Current.Server.MapPathです。

私は今、自分のウェブサーバーの近くにいませんが、

var serverPath = HttpContext.Current.Server.MapPath("~/Pictures/");
var files = Directory.GetFiles(serverPath);

始める必要があります。

于 2012-11-13T17:59:31.253 に答える
1

「〜」に意味があるとは思わないでしょう。

Application.StartupPath を試す

于 2012-11-13T17:47:33.917 に答える
0

「~/Pictures/」の代わりに「Pictures」のような相対ディレクトリを指定するとうまくいくはずです。

于 2012-11-13T17:47:08.600 に答える
0

を使用するだけSystem.IO.Directory.GetFiles('Pictures')です。Windows のパス区切り文字は\ではなく/であり、現在のディレクトリより下のディレクトリは相対パスの場所として参照されます。

于 2012-11-13T17:48:07.567 に答える