Домашние задания

Домашнее задание 1. Обход файлов

  1. Разработайте класс Walk, осуществляющий подсчет хэш-сумм файлов.
    1. Формат запуска:
      java Walk <входной файл> <выходной файл>
    2. Входной файл содержит список файлов, которые требуется обойти.
    3. Выходной файл должен содержать по одной строке для каждого файла. Формат строки:
      <шестнадцатеричная хэш-сумма> <путь к файлу>
    4. Для подсчета хэш-суммы используйте последние 64 бита SHA-256 (поддержка есть в стандартной библиотеке). .
    5. Если при чтении файла возникают ошибки, укажите в качестве его хэш-суммы все нули.
    6. Кодировка входного и выходного файлов — UTF-8.
    7. Размеры файлов могут превышать размер оперативной памяти.
    8. Пример
      Входной файл
      samples/1
      samples/12
      samples/123
      samples/1234
      samples/1
      samples/binary
      samples/no-such-file
                              
      Выходной файл
      6b86b273ff34fce1 samples/1
      6b51d431df5d7f14 samples/12
      a665a45920422f9d samples/123
      03ac674216f3e15c samples/1234
      6b86b273ff34fce1 samples/1
      40aff2e9d2d8922e samples/binary
      0000000000000000 samples/no-such-file
                               
  2. Сложный вариант:
    1. Разработайте класс RecursiveWalk, осуществляющий подсчет хэш-сумм файлов в директориях.
    2. Входной файл содержит список файлов и директорий, которые требуется обойти. Обход директорий осуществляется рекурсивно.
    3. Пример:
      Входной файл
      samples/binary
      samples
      samples/no-such-file
                              
      Выходной файл
      40aff2e9d2d8922e samples/binary
      6b86b273ff34fce1 samples/1
      6b51d431df5d7f14 samples/12
      a665a45920422f9d samples/123
      03ac674216f3e15c samples/1234
      40aff2e9d2d8922e samples/binary
      0000000000000000 samples/such-file
                              
  3. При выполнении задания следует обратить внимание на:
    • Дизайн и обработку исключений, диагностику ошибок.
    • Программа должна корректно завершаться даже в случае ошибки.
    • Корректная работа с вводом-выводом.
    • Отсутствие утечки ресурсов.
    • Возможность повторного использования кода.
  4. Требования к оформлению задания.
    • Проверяется исходный код задания.
    • Весь код должен находиться в пакете info.kgeorgiy.ja.фамилия.walk.

Репозиторий курса