Я хотел бы знать (используя C #), как я могу удалять файлы в определенном каталоге старше 3 месяцев, но я предполагаю, что период даты может быть гибким.
Для ясности: я ищу файлы старше 90 дней, другими словами, файлы, созданные менее 90 дней назад, должны быть сохранены, а все остальные удалены.
Ответы:
Что-то вроде этого outta do it.
источник
LastAccessTime
-CreationTime
если хотите, вам следует купить недвижимость !Вот однострочная лямбда:
источник
new DirectoryInfo(dir).GetFiles()
быстрее, чемnew FileInfo(f)
для каждого отдельного файла.Для тех, кто любит чрезмерно использовать LINQ.
источник
.ToList()
добавляет вызов, кроме второго цикла через совпадающие файлы?List<T>
определяетForEach
метод, который можно использовать для примененияAction<T>
ко всем элементам. К сожалению, такого метода расширения дляIEnumerable<T>
.ForEach
метод расширенияIEnumerable<T>
так давно, что иногда забываю, что он не встроен.Вот фрагмент того, как узнать время создания файлов в каталоге и найти те, которые были созданы 3 месяца назад (точнее, 90 дней назад):
источник
ToList()
,DirectoryInfo.GetFiles()
возвращаетFileInfo[]
.foreach()
цикла, в которой будет храниться значение(DateTime.Now- new TimeSpan(90, 0, 0, 0))
. Нет смысла вычислять это повторно в цикле.Свойство GetLastAccessTime в классе System.IO.File должно помочь.
источник
В основном вы можете использовать Directory.Getfiles (Path), чтобы получить список всех файлов. После этого вы просматриваете список и вызываете GetLastAccessTim (), как предложил Кейт.
источник
Что-то такое
источник
Я попробовал этот код, и он работает очень хорошо, надеюсь, это ответил
источник
Самый канонический подход, когда вы хотите удалить файлы в течение определенного времени, - это использовать LastWriteTime файла (последний раз, когда файл был изменен):
(Вышеупомянутое основано на ответе Ури, но с
LastWriteTime
.)Всякий раз, когда вы слышите, как люди говорят об удалении файлов старше определенного периода времени (что является довольно распространенным действием), почти всегда они ищут выполнение этого на основе LastModifiedTime файла.
В качестве альтернативы, в очень необычных обстоятельствах вы можете использовать нижеприведенное, но используйте их с осторожностью, поскольку они содержат оговорки.
Время создания файла в текущем месте. Однако будьте осторожны, если файл был скопирован, это будет время его копирования и
CreationTime
будет новее, чем файлLastWriteTime
.Если вы хотите удалить файлы в зависимости от того, когда они были прочитаны в последний раз, вы можете использовать это, но нет никакой гарантии, что он будет обновлен, так как его можно отключить в NTFS. Проверьте,
fsutil behavior query DisableLastAccess
горит ли он. Также в NTFS для обновления LastAccessTime файла после обращения к нему может потребоваться до часа.источник
вам просто нужен FileInfo -> CreationTime
а чем просто рассчитать разницу во времени.
в app.config вы можете сохранить значение TimeSpan того, сколько лет должно быть удалено файлу.
также проверьте метод DateTime Subtract .
удачи
источник
В качестве альтернативы вы можете использовать метод File.GetCreationTime, если вам нужно удалить файлы на основе дат создания.
источник
использование при загрузке страницы или веб-сервисе или любое другое использование.
Моя концепция - каждые 7 дней, мне нужно удалить файл папки без использования БД
источник
источник
Например: чтобы перейти к проекту «Моя папка» в источнике, мне нужно открыть две папки. Я делаю этот алгоритм на 2 дня в неделю и на 4 часа
источник
Я использую следующее в консольном приложении, работающем как служба, для получения информации о каталоге из файла App.Settings. Количество дней для хранения файлов также можно настроить, умноженное на -1 для использования в методе AddDays () DateTime.Now.
источник
Пример типа SSIS .. (если это кому-то поможет)
источник
так как решения с
new FileInfo(filePath)
не легко проверяемыми, я предлагаю использовать Упаковщик для классов , какDirectory
,File
иPath
как это:Затем используйте что-то вроде этого:
источник
Просто создайте небольшую функцию удаления, которая поможет вам в решении этой задачи. Я протестировал этот код, и он отлично работает.
Эта функция удаляет файлы старше 90 дней, а также файл с расширением .zip, который нужно удалить из папки.
источник