2016-07-29 10 views
1

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

Мой код:

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 содержит только имя новейших каталога файлов, но не полный путь. Я (конечно) получаю сообщение об ошибке, потому что каталог не найден без его пути.

+0

это не кажется, что вы пробовали, поэтому у вас есть runfrom, который является путем, то вы получите newestdir, который имена файлов в этой папке .. так runfrom + newestdir + файл? не говоря уже о параметрах directoryinfo – BugFinder

+0

_newestdir_ - это папка, а не файл. Если я создаю строку, я не могу использовать getfiles. Я уже пробовал, что – Mahobo

+0

нет, но если вы хотите использовать имя файла ........ у вас есть возможность использовать directoryinfo, чтобы вытащить полное имя newestdir или цепочку runfrom + newesdir + file .... – BugFinder

ответ

1

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

ПолноеИмя - Получает полный путь к каталогу или файлу (Наследуется от FileSystemInfo.)


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

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(); 
+0

Это именно то, что я хотел сделать. Большое спасибо! Теперь я могу построить полную строку с помощью string full = dir + @ "\" + newestdir.ToString() + @ "\" + file.ToString(); – Mahobo