В общем я немного помучился с работой с архивами и зашел в некоторый тупик. Эмпирическим путем был выявлен крайне неприятный факт - использованием исходящего потока по архиву
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream("C:/Users/mega9/Desktop/JAVA/arch.zip"));
делает крайне нездоровую фигню - создается НОВЫЙ архив с таким же именем, что автоматически приводит к перезаписи старого. Получается, что добавить файл в архив невозможно. И единственный способ это сделать - это как предлагают в этой задаче - сначала прочитать архив полностью, потом дописать файл и уже вот это все записать. Но с точки зрения здравого смысла это абсолютное безумие. А если тебе надо в архив на терабайт записать 1 файл на 2 килобайта?)) Тебе придется занять памяти чтоб скопировать в темп целый терабайт?)) бредятина какая то) Есть какой то способ здорового человека?