Обзор

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

Как заархивировать папку в ZIP

Если вы хотите создать ZIP архив из всей папки, сохраняя структуру, вы можете использовать API Aspose.Zip для Java и следующий код. Конструкция try-with-resources автоматически закрывает ресурс Archive после выполнения всего кода, независимо от того, все ли файлы закрыты правильно. Путь, указанный в объекте File corpus, указывает папку, которая будет сжата. С помощью createEntries, каждый элемент архива добавляется отдельно, таким образом сохраняя оригинальную структуру, которая хранится в файле под названием archive.zip. Важно отметить, что код не проверяет наличие папки "D:\Data" или наличие в ней файлов. Если каталог не существует или пуст, код не создаст никакого архива.
Метод CreateEntries имеет необязательный второй параметр includeRootDirectory, который указывает, нужно ли включать корневой каталог в архив. По умолчанию значение true, поэтому в приведенном примере все записи архива будут находиться внутри папки "Data". Если вы хотите добавить только содержимое каталога, передайте false.
Пример - Создание архива из папки:

    try (Archive archive = new Archive()) {
        File corpus = new File("D:\\Data");
        archive.createEntries(corpus);
        archive.save("archive.zip");
    }

Следующий пример кода создает ZIP архив с двумя файлами: "image.bmp" и "lyrics.txt". Переменные fi1 и fi2 представляют эти файлы. Метод createEntry объекта архива используется для добавления каждого файла в архив с указанными путями: "data\pictures" для "image.bmp" и "data\text" для "lyrics.txt". В итоге, этот код создает ZIP архив под названием "archive.zip", содержащий две папки, "data\pictures" и "data\text", каждая из которых содержит один из соответствующих файлов.

    try (Archive archive = new Archive()) {
        File fi1 = new File("image.bmp");
        File fi2 = new File("lyrics.txt");
        archive.createEntry("data\\pictures\\photo.bmp", fi1);
        archive.createEntry("data\\text\\song.txt", fi2);
        archive.save("archive.zip");
    }

Как сжать папку в 7-ZIP с сохранением структуры

Следующий код демонстрирует, как создать 7Z архив и добавить в него все файлы и папки из указанного каталога. Он работает аналогично архиву с форматом ZIP файла. Метод CreateEntries является аналогичным методом для 7Z архива. Он также имеет параметр includeRootDirectory. Важно: будет реализован в Aspose.ZIP for Java 24.4

    try (SevenZipArchive archive = new SevenZipArchive()) {
        File corpus = new File("D:\\Data");
        archive.createEntries(corpus);
        archive.save("archive.7z");
    }

Как сжать папку в TAR с сохранением её структуры

Код создает TAR архив для указанного каталога. Он использует класс TarArchive из Java Archive API для достижения этого. Метод createEntries добавляет все файлы и папки из каталога в архив, сохраняя структуру каталога. Наконец, метод save записывает содержимое архива в файл "archive.tar".
Пример:

    try (TarArchive archive = new TarArchive()) {
        archive.createEntries("D:\\Data");
        archive.save("archive.tar");
    }

Приведенный код создает TAR архив под названием "archive.tar", содержащий две записи. Каталог Архив - Он добавляет все файлы и папки из каталога "D:\Data" в архив, сохраняя структуру каталога. Это эффективно архивирует все содержимое указанного каталога. И отдельная запись файла - он добавляет конкретный файл под названием "data.bin" из подкаталога "inner" в архив. Это позволяет включить определенный файл без архивирования всей структуры каталога. В итоге, этот код создает TAR архив, который объединяет как архивирование на уровне каталогов, так и включение отдельных файлов.
Пример 2 – Комбинированное архивирование каталога и отдельного файла

    try (TarArchive archive = new TarArchive()) {
        archive.createEntries("D:\\Data");
        archive.createEntry("inner\\data.bin", "data.bin");
        archive.save("archive.tar");
    }

Другие поддерживаемые функции API Aspose.ZIP для Java

С библиотекой Aspose.ZIP в Java, вы можете без проблем выполнять различные задачи, связанные с документами ZIP. Независимо от того, нужно ли вам конвертировать форматы, объединять файлы, редактировать содержимое или извлекать данные, Aspose.ZIP предоставляет всестороннюю функциональность для упрощения рабочего процесса и повышения продуктивности.

  

Support and Learning Resources

  
  

Aspose.Zip offers individual archive processing APIs for other popular development environments, listed below: