Поиск дубликатов файлов — практический проект на Java для тех, кто готов работать с реальным содержимым файлов. Вы создадите многократно используемую проверяющую программу, которая только читает исходные файлы, находит полные группы одинаковых файлов и сохраняет каждый исходный путь. Разные имена могут скрывать одинаковые байты, а совпадающие имена или размеры — различное содержимое.
Курс включает две пошаговые лабораторные работы и одно самостоятельное задание. Сначала вы прочитаете двоичные потоки и сохраните полный перечень путей. Затем сузите круг кандидатов по размеру и отпечатку SHA-256, подтвердите равенство сравнением байтов и заново создадите отчёт после изменения учебной копии. Задание применяет те же механизмы к другой папке с материалами. Каждая работа начинается независимо. Отведите около 150 минут: это авторская оценка с учётом чтения и обычных исправлений.
Чему вы научитесь
После завершения курса вы сможете:
- читать двоичные файлы с
try-with-resources, используя фактическую длину каждой операции чтения; - вычислять отпечатки SHA-256 для кандидатов и учитывать каждый путь, включая пустые файлы и неполные последние буферы;
- подтверждать равенство сравнением реальных байтов, не принимая имена, размеры или хеши за доказательство;
- сохранять всех участников группы дубликатов, в том числе группы из трёх файлов и более, исключая уникальные файлы;
- заново строить актуальный отчёт после изменения учебного файла, сохраняя все оригиналы;
- записывать отчёты за пределами сканируемого дерева и сообщать об ошибке для нечитаемых или неподдерживаемых входных данных.
Для кого этот курс
Курс предназначен для изучающих Java, которые хотят объединить стандартные средства работы с файлами, коллекции и исключения в полезной терминальной программе.
Предварительные требования: Классы, методы, базовые коллекции, исключения, начальное чтение файлов на Java и простая навигация в терминале. Управление общественным пунктом выдачи инструментов, особенно вторая пошаговая работа, даёт основы чтения файлов и исключений ввода-вывода; подойдут и эквивалентные знания. Этот курс перед использованием объясняет двоичные потоки, число прочитанных байтов, закрытие ресурсов и различие между кандидатами и сравнением байтов.
Учебная среда: LabEx предоставляет WebIDE в браузере со встроенным терминалом, компилятором Java, начальным кодом и настоящими файлами-примерами, включая небольшие PNG-изображения. Программу можно запускать и исследовать файлы без локальной установки Java. Команды, подписи и вывод остаются на английском.
Часто задаваемые вопросы
Удаляет ли программа дубликаты?
Нет. Результат — проверяющая программа и полный отчёт по группам для просмотра. Все оригиналы сохраняются; автоматическое удаление, восстановление и очистка диска не входят в проект.
Зачем сравнивать байты после вычисления отпечатка?
Размер и SHA-256 помогают выбрать кандидатов. Окончательное решение основано на реальном содержимом, поэтому программа сохраняет каждый совпадающий путь и разделяет файлы одинакового размера с разными байтами. Курс не считает хеш математическим доказательством равенства.
Какие входные данные поддерживаются?
Обычные файлы и каталоги, которые не меняются во время запуска, включая пробелы и имена в UTF-8. Символические ссылки, специальные файлы и пути с табуляциями или переводами строк отклоняются. Ошибка чтения не должна выглядеть как полный успешный обход. Отчёты находятся вне входного дерева. У каждой работы свои данные, файлы прежней VM не нужны; гарантий согласованного снимка при параллельных изменениях проект не даёт.

