Я довольно новичок в Java, но документация API содержит довольно разумное количество информации для стандартных библиотек Java, в том числе для java.util.zip .Переходя оттуда к записи ZipFile , вы можете прокрутить список методов до уровня getEntry .Похоже, что именно с этого маршрута вы должны начать!
РЕДАКТИРОВАТЬ: помните, что вам, вероятно, потребуется включить каталог (например: "dir \ subdirF \ subdirW \ FileThatYouWant.txtmsgstr ") при выполнении вызова, так как кажется, что имена файлов называются, когда вы проходите один за другим.
РЕДАКТИРОВАТЬ 2: здесь доступно значительное количество информации: Сжатие и распаковка данных с использованием API Java , если вы хотите немного прочитать: D.С учетом ограничений памяти, единственное разумное решение для вас может заключаться в использовании объекта ZipInputStream , который AFAIK потребует от вас проходить через каждый ZipEntry в архиве (в среднем 50 000?), Но не потребует от васзагрузить весь файл в память.Что касается производительности, я бы предположил, что пошаговое выполнение вручную будет таким же эффективным, как любая текущая реализация этой нишевой функциональности.