Перейти к содержимому
Максиметер

Сверяем файлы сборки и находим расхождения!

Сверяем файлы сборки и находим расхождения! После копирования приложения можно проверить, что файлы совпадают с исходной сборкой. Напишем небольшую проверку двух каталогов, которая найдёт отсутствующие и изменённые файлы, не загружая их целиком в память. Обойдём файлы без загрузки всего списка в память и закроем поток после проверки. Символические ссылки отфильтруем через LinkOption.NOFOLLOW_LINKS: try (Stream<Path> files = Files.walk(buildDir)) {     Iterator<Path> paths = files.filter(path ->         Files.isRegularFile(path, NOFOLLOW_LINKS)).iterator();     while (paths.hasNext()) compare(paths.next(), buildDir, deployDir); } Для каждого файла строим такой же относительный путь в каталоге развёртывания. Это сохраняет структуру вложенных папок: Path relative = buildDir.relativize(source); Path deployed = deployDir.resolve(relative); Отсутствующий файл отмечаем отдельно, иначе проверка совпадения не сможет отличить его от пустого файла: if (!Files.isRegularFile(deployed)) {     reportMissing(relative);     return; } Для существующих файлов используем Files.mismatch. Метод читает содержимое по мере необходимости и возвращает позицию первого различия, а -1 означает полное совпадение: long offset = Files.mismatch(source, deployed); if (offset == -1) reportMatch(relative); else reportDifference(relative, offset); Можно добавить обратный проход по каталогу развёртывания, если нужно также находить лишние файлы. Java Библиотека | Мы в Телеграм

128 просмотров

Канал в каталоге Максиметера

1 405 подписчиков · Развлечения

Ещё по теме «Развлечения»

Читать дальше

Два раза в неделю свежие посты этого канала — на почту и в личную ленту. Без повторного поиска канала вручную.