Wenn Sie eine using System.IO oder einen Verweis darauf hinzuzufügen, sollte dies alle XML-Dateien im Ordner App_Data, in Ihrer Anwendungsumgebung finden:
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]
Wenn Sie die Pfadzeichenfolge bereits aufgelöst haben, können Sie den gesamten Server.MapPath ("/ App_Data") durch den Pfad für eine Desktopanwendung ersetzen, und der Rest bleibt unverändert.
über die Sammlung iterieren nur eine foreach-Schleife verwenden, wie in:
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]
Da die OP zu einem Web-Szenario bezieht sich
Durch die Verwendung von System-Zugabe .Web.Hosting-Anweisung an meinen Controller Ich konnte das 'HostingEnvironment.MapPath' in einer mvc-Beispielanwendung testen. Hier ist, was ich gefunden habe.
In diesem Beispiel wird der virtuelle Pfad '/ App_Data' gefunden, sammelt die '.xml' Dateien, die im Pfad gefunden werden. Dann iteriert es über die Sammlung und liest den Inhalt jeder Datei in ein Array-Element. Schließlich zeigt es die Dateinamen als Links in der Ansicht sowie den Inhalt jeder Datei mit einer Überschrift # an. Beachten Sie, dass dies möglicherweise nicht das am besten optimierte Codebeispiel ist.
C# Code: in Mvc-Controller
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: in Ansicht
<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>
Nur weil es in Ihrem Quellbaum ist bedeutet nicht, dass es in Ihrem binären Anwendungsordner vorhanden ist, in den Ihre ausführbare Datei kompiliert wird. –
Ist der Wert von 'AppDomain.CurrentDomain.BaseDirectory' genau das, was Sie denken? – grek40
Ich denke anstelle von 'AppDomain.CurrentDomain.BaseDirectory + " \\ App_Data \\ "' Sie wollen 'Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData)' –