2013-04-16 2 views
0

Я делаю домашнее задание об управлении файлами JAR. Я могу удалить файлы в JAR-файле, но папки все еще находятся в нем.Как удалить папку в файле Jar?

Как их удалить?

+0

Чтобы лучше помочь, опубликуйте [SSCCE] (http://sscce.org/) текущего кода. BTW - AFAIU - Почтовые файлы (и Jars) не содержат «папок». –

+0

Err, удалите папки тоже? – EJP

ответ

0

У меня нет кода для этого, но основная идея проста и должна переводиться практически на любой язык одинаково. Макет файла jar - это всего лишь серия блоков, представляющих файлы (заголовок, за которым следуют сжатые данные), завершенные центральным каталогом, который содержит только все метаданные. Вот этот процесс:

Сканирование вперед в файле до тех пор, пока вы не найдете первый файл, который хотите удалить. Сканирование вперед в файле до тех пор, пока вы не найдете первый файл, который вы не хотите удалять, или попадете в центральный каталог. Сканирование вперед в файле до тех пор, пока вы не найдете первый файл, который хотите удалить, или попадете в центральный каталог. Скопируйте все данные, найденные на шаге 3, на данные, которые вы пропустили на шаге 2, пока не найдете другой файл, который хотите удалить, или попадете в центральный каталог. Перейдите к шагу 2, если вы не попали в центральный каталог. Скопируйте центральный каталог туда, где вы остановили копирование, оставив записи для удаленных файлов и изменив смещения, чтобы указать, сколько вы перемещали каждый файл. См. http://en.wikipedia.org/wiki/ZIP_%28file_format%29 для получения подробной информации о структурах ZIP-файлов.

Как предлагает bestsss, вы можете выполнить копирование в другой файл, чтобы предотвратить потерю данных в случае сбоя.