Nano Hash - криптовалюты, майнинг, программирование

Как проверить размер каталога и, возможно, удалить последний файл

Возможный дубликат:
Как получить размер каталога (файлов в каталоге) в C#?

У меня есть программа, которая делает резервные копии SQL Server. После каждого запуска он создает файл резервной копии. Но файлы накапливаются.

Я хотел бы добавить метод, который будет проверять размер каталога резервных копий, и если размер будет выше порогового размера, он удалит последний файл.

Вы знаете, как я могу это сделать?

Большое спасибо!


  • Я думал, что дисковое пространство, которое используется файлами в каталоге 03.09.2012

Ответы:


1

Использование DirectoryInfo и немного Linq — простая задача

public void RemoveLastFile(string folderPath, long dirSizeLimit)
{
    long size = 0;
    var files = new DirectoryInfo(folderPath).GetFiles();
    files.Sum(f => size += f.Length);
    if(size > dirSizeLimit)
    {
       var sorted = files.OrderBy(f => f.LastWriteTime);
       File.Delete(sorted.First().FullName);
   }
}

конечно это пример. Вам нужно добавить немного проверки ошибок.
P.S. Я использую свойство LastWriteTime класса FileInfo, в вашем случае (файлы резервных копий), я думаю, что оно эквивалентно CreationTime.

02.09.2012
  • Это действительно простой ответ. Я бы просто заменил цикл if на while, имея в виду, что между последовательными вызовами RemoveLastFile может быть создано несколько файлов. 03.09.2012

  • 2

    Добавьте все файлы в список и используйте CompareTo в сочетании с FileInfo CreationTime для сортировки списка. Затем удалите файлы в зависимости от того, сколько файлов вы хотите оставить в каталоге.

    Что касается вычисления файла каталога, просто выполните итерацию по всем файлам в каталоге, используя FileInfo Length, чтобы увеличить переменную для общего размера.

    02.09.2012
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..