Кажется, что можно делать то, что я хочу, используя библиотеку TrueZip:
https://truezip.dev.java.net/manual-6.html#Copying
Это не идеальная ситуация, поскольку библиотека довольно большая и имеет больший объем, чем мне нужно (а также с некоторыми специфическими и запутанными деталями, такими как организация вокруг подклассов java.io.File, которые также называются File для использования в классах, которые обычно также обрабатывают экземпляры java.io.File!).
По крайней мере, мне не нужно быть в ситуации, когда большинство строк кода в классе не связаны с ответственностью класса, или для поддержания сложного служебного класса в проекте, который не связан с целью модуля.
Я думаю, что это типичный пример основной причины, по которой опытные разработчики переходят с Java на Ruby. Несмотря на обилие библиотек в Java, слишком многие из них плохо спроектированы, так что простые операции становятся такими же сложными для выполнения, как и более специализированные. Похоже, что они написаны снизу вверх технологическими экспертами, которые больше стремятся раскрыть все детали и возможности, чем упрощать повседневные задачи. Люди, работающие с Apache, заслуживают чести за создание библиотек, которые освобождают ваш класс от строк кода, особенно от циклов и условных выражений, которые не связаны с бизнес-целями класса.