Прмиминл code style и добавил gitignore
Применил code style.
Создал package и убралв него все классы
Слегка переработал класс Copy
Исправлены все конструкторы. Вынесен метода запуска приложения в отдельбный класс
Строки сравнивают методом .equals(), а не ==
Никаких констант в коде
Убрать дубляж кода
Метод copy  в классах одинаковый - надо убирать в предка
Теперь реализации абстрактоного класса передают в него тип обрабатываемого файла
Выносим константы в отдельный файл
Утильный класс для работы с именами файлов
Используем утильный класс. Имя файла и его расширение можно вычислять сразу, при создании объекта
Зафинализировано то, что не должно меняться
Чтение и сохранение надо разнести по разным метоам.
Убираем мертвый код
Gjcktlybq inhb[