Подтвердить что ты не робот

Как получить новейший (последний измененный) каталог [С#]

В настоящее время мое приложение использует string [] subdirs = Directory.GetDirectories(path), чтобы получить список подкаталогов, и теперь я хочу извлечь путь к последнему (последнему измененному) подкаталогу в списке.

Каков самый простой способ сделать это? (эффективность не является серьезной проблемой, но надежность)

4b9b3361

Ответ 1

без использования LINQ

DateTime lastHigh = new DateTime(1900,1,1);
string highDir;
foreach (string subdir in Directory.GetDirectories(path)){
    DirectoryInfo fi1 = new DirectoryInfo(subdir);
    DateTime created = fi1.LastWriteTime;

    if (created > lastHigh){
        highDir = subdir;
        lastHigh = created;
    }
}

Ответ 2

нерекурсивна:

new DirectoryInfo(path).GetDirectories()
                       .OrderByDescending(d=>d.LastWriteTimeUtc).First();

Рекурсивный:

new DirectoryInfo(path).GetDirectories("*", 
    SearchOption.AllDirectories).OrderByDescending(d=>d.LastWriteTimeUtc).First();

Ответ 3

Будьте предупреждены: вам может потребоваться вызвать Refresh() в объекте Справочная информация, чтобы получить правильную информацию:

например. в Laramie ответ, вы будете редактировать:

DirectoryInfo fi1 = new DirectoryInfo(subdir);
fi1.Refresh();
DateTime created = fi1.LastWriteTime;

В противном случае вы можете получить устаревшую информацию, как я:

"Вызовы должны быть сделаны для обновления, прежде чем пытаться получить атрибут информация, или информация будет устаревшей".

http://msdn.microsoft.com/en-us/library/system.io.filesysteminfo.refresh(v=vs.71).aspx

Ответ 4

Вы можете использовать Directory.GetLastWriteTime (или Directory.GetLastWriteTimeUtc, это не имеет большого значения в этом случае, когда вы просто делаете относительные сравнения).

Хотя вы просто хотите посмотреть "измененное" время, о котором сообщает ОС, или вы хотите найти каталог с последним измененным файлом внутри него? Они не всегда совпадают (то есть ОС не всегда обновляет содержащееся в каталоге время "последней модификации", когда оно изменяет файл).

Ответ 5

Если вы создаете службу Windows и хотите получать уведомление о создании нового файла или каталога, вы также можете использовать FileSystemWatcher. По общему признанию, это не так просто, но интересно поиграть.:)