Архивируйте и разархивируйте папки и файлы Используя Java

Если Мое Приложение хочет архивировать Результирующие файлы (группа Файлов) использование Java динамическим способом, каковы доступные варианты в Java? Когда я Просмотрел, у меня есть пакет java.util.zip для использования, но есть ли какой-либо другой путь, где я могу использовать его для реализации?

6
задан gmhk 16 February 2010 в 09:39
поделиться

3 ответа

public class FolderZiper {
  public static void main(String[] a) throws Exception {
    zipFolder("c:\\a", "c:\\a.zip");
  }

  static public void zipFolder(String srcFolder, String destZipFile) throws Exception {
    ZipOutputStream zip = null;
    FileOutputStream fileWriter = null;

    fileWriter = new FileOutputStream(destZipFile);
    zip = new ZipOutputStream(fileWriter);

    addFolderToZip("", srcFolder, zip);
    zip.flush();
    zip.close();
  }

  static private void addFileToZip(String path, String srcFile, ZipOutputStream zip)
      throws Exception {

    File folder = new File(srcFile);
    if (folder.isDirectory()) {
      addFolderToZip(path, srcFile, zip);
    } else {
      byte[] buf = new byte[1024];
      int len;
      FileInputStream in = new FileInputStream(srcFile);
      zip.putNextEntry(new ZipEntry(path + "/" + folder.getName()));
      while ((len = in.read(buf)) > 0) {
        zip.write(buf, 0, len);
      }
    }
  }

  static private void addFolderToZip(String path, String srcFolder, ZipOutputStream zip)
      throws Exception {
    File folder = new File(srcFolder);

    for (String fileName : folder.list()) {
      if (path.equals("")) {
        addFileToZip(folder.getName(), srcFolder + "/" + fileName, zip);
      } else {
        addFileToZip(path + "/" + folder.getName(), srcFolder + "/" + fileName, zip);
      }
    }
  }
}
15
ответ дан 8 December 2019 в 12:59
поделиться

Вы можете использовать библиотеку обработки файлов ZIP, которая поставляется с JDK Также это учебное пособие может оказаться полезным.

0
ответ дан 8 December 2019 в 12:59
поделиться

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

TrueZIP - это альтернатива, которую мы использовали в нашем проекте: https://truezip.dev.java.net/ Проверьте документацию на сайте.

3
ответ дан 8 December 2019 в 12:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: