Если добавить с помощью System.IO или ссылку на него, это должно найти все XML-файлы в папке App_Data, в среде приложения:
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 (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]
Поскольку ОП со ссылкой на веб-сценарии
Добавляя с помощью системы .Web.Hosting моему контроллеру, я смог протестировать «HostingEnvironment.MapPath» в приложении примера mvc. Вот что я придумал.
В этом примере находит виртуальный путь '/ 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: в View
<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>
Просто потому, что она присутствует в исходном дереве не означает, что он присутствует в вашей двоичной папке приложений, в которую скомпилирован ваш исполняемый файл. –
Является ли значение 'AppDomain.CurrentDomain.BaseDirectory' именно тем, что вы думаете? – grek40
Я думаю вместо 'AppDomain.CurrentDomain.BaseDirectory + " \\ App_Data \\ "' вы хотите 'Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData)' –