、これはあなたのアプリケーション環境でApp_Dataフォルダ内のすべての.xmlファイルを、見つける必要があります。
DirectoryInfo di = new DirectoryInfo(Server.MapPath("/App_Data"));
var fi = di.EnumerateFiles("*.xml", SearchOption.TopDirectoryOnly);
// fi should contain the enumeration of files found at that path
// you can iterate over fi and have all the file info of each file found
[UPDATE]
すでにパス文字列が解決されている場合は、Server.MapPath( "/ App_Data")全体をデスクトップアプリケーションのパスに置き換えることができ、残りは同じままです。ちょうどのようにforeachループを使用してコレクションにわたって反復する
:
foreach (FileInfo file in fi)
{
string s = "File Name: " + file.Name + "\r";
s += "Full Path: " + file.FullName + "\r";
s += "File Ext.: " + file.Extension + "\r";
MessageBox.Show(s);
}
[UPDATE 2]
OPを使用してシステムを追加することにより、ウェブシナリオ
に言及されているので私のコントローラへの.Web.Hosting文私はmvcサンプルアプリケーションで 'HostingEnvironment.MapPath'をテストすることができました。 ここに私が思いついたのがあります。
この例では、仮想パス '/ App_Data'を探し、パスで見つかった '.xml'ファイルを収集します。 次に、コレクションを反復処理し、各ファイルの内容を配列要素に読み込みます。 最後に、ファイル名を見出しにリンクとして表示し、各ファイルの内容に見出し#を付けて表示します。 これは、最適化されたコードサンプルではない可能性があることに注意してください。
C#コード:MVCコントローラで
DirectoryInfo di = new DirectoryInfo(HostingEnvironment.MapPath("/App_Data"));
var fi = di.EnumerateFiles("*.xml", SearchOption.TopDirectoryOnly);
ViewBag.Files = fi;
string[] fs = new string[fi.Count()];
int fc = fi.Count();
int x = 0;
foreach (FileInfo f in fi)
{
StreamReader sr = new StreamReader(f.FullName);
fs[x] = sr.ReadToEnd();
sr.Close();
if (x < fc) x++;
}
ViewBag.Contents = fs;
ViewBag.ContCount = fc;
HTML:ビュー
<div>
<h3>Files Found:</h3>
<p>
@foreach (FileInfo f in @ViewBag.Files)
{
<a href="@f.FullName">@f.Name</a><br />
}
</p>
</div>
<div>
<h3>File Contents:</h3>
@for (int c = 0; c < @ViewBag.ContCount; c++)
{
<h4>Heading @(c)</h4>
<p>
@ViewBag.Contents[@c]
</p>
<hr />
}
</div>
それはあなたのソースツリーに存在しているからといって:そして、あなたはあなたが戻ってプロジェクトフォルダに来るし、次のような
App_Data
を見つける必要がありませんdebug
でだから、プロジェクトフォルダ内App_Data
フォルダを検索したいです実行可能ファイルがコンパイルされるアプリケーションのバイナリフォルダに存在しているわけではありません。 –'AppDomain.CurrentDomain.BaseDirectory'の値はまさにそれがあなたのものだと思いますか? – grek40
私は 'AppDomain.CurrentDomain.BaseDirectory + "の代わりに\\ App_Data \\ "'あなたがしたいと思う 'Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)' –