как получить полный путь к последнему файлу через Directoryinfo

Я пытаюсь найти последний файл .XML в последней созданной папке. Думаю, это простое решение, но у меня, как у новичка, от него седеют волосы.

Мой код:

    string dir = runfrom + @"\results";
    string xml = "*.xml";
    DirectoryInfo newestdir = new DirectoryInfo(dir).GetDirectories().OrderByDescending(d => d.LastWriteTimeUtc).First();
    var dirInfo = new DirectoryInfo(newestdir.ToString());
    var file = (from f in dirInfo.GetFiles(xml) orderby f.LastWriteTime descending select f).First();

dirinfo содержит только имя самого нового каталога, но не полный путь. Я (конечно) получаю сообщение об ошибке, потому что каталог не найден без пути.


person Mahobo    schedule 29.07.2016    source источник
comment
это не похоже на то, что вы пытались, поэтому у вас есть runfrom, который является путем, затем вы получаете newestdir, который представляет собой имена файлов в этой папке.. поэтому runfrom+newestdir+file? не говоря уже о параметрах directoryinfo   -  person BugFinder    schedule 29.07.2016
comment
newestdir — это папка, а не файл. Если я создаю строку, я не могу использовать для нее getfiles. я уже пробовал это   -  person Mahobo    schedule 29.07.2016
comment
нет, но когда вы хотите использовать имя файла ........, у вас есть возможность использовать directoryinfo, чтобы получить полное имя нового каталога, или цепочку runfrom+newesdir+file....   -  person BugFinder    schedule 29.07.2016


Ответы (1)


Вы можете использовать DirectoryInfo.FullName, чтобы получить полный путь.

FullName — получает полный путь к каталогу или файлу. (Унаследовано от FileSystemInfo.)


Однако, похоже, вам не нужно получать полный путь - вы можете использовать экземпляр DirectoryInfo для перечисления его файлов.

DirectoryInfo newestdir = new DirectoryInfo(dir).GetDirectories().OrderByDescending(d => d.LastWriteTimeUtc).First();
var file = (from f in newestdir.GetFiles(xml) orderby f.LastWriteTime descending select f).First();
person Jossef Harush    schedule 29.07.2016
comment
Это именно то, что я хотел сделать. Большое спасибо! Теперь я могу построить полную строку со строкой full = dir + @\ + newestdir.ToString() + @\ + file.ToString(); - person Mahobo; 29.07.2016