Java переименовывает содержимое файла zip/gz без раздувания

Для .zip-файла в Java у нас есть ZipInputStream и ZipOutputStream для чтения и записи в zip-файл.

    zin = new ZipInputStream(new FileInputStream("xx.zip"));
    ZipEntry entry =  zin.getNextEntry();
    while (entry != null) {
        String name = entry.getName();
        File file = new File(name);
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));
        byte[] bytesIn = new byte[1024];
        while ((int read = zipIn.read(bytesIn)) != -1) {
            bos.write(bytesIn, 0, read);
        }
        bos.close();
        // code for renaming file ... here ...
        // . . . 
        entry = zin.getNextEntry();
    }
    zin.close();

И аналогично для расширения .gz с помощью GZIPInputStream. Поскольку файлы .gz имеют только одно содержимое, zipentry не требуется. Мы можем напрямую увеличить его, используя имя в виде файла .gz (без суффикса). Мой вопрос:

Могу ли я переименовать содержимое .zip (а также .gz) без увеличения содержимого? В файле .gz, поскольку у нас одинаковое имя файла .gz и содержимое, если мы переименуем файл .gz, это также переименует его содержимое.

Для файла .zip могу ли я просто переименовать ZipEntry без полного раздувания?

Пожалуйста, предложите.


person Dr. Debasish Jana    schedule 05.05.2020    source источник


Ответы (1)


Zip4j имеет функцию переименования файлов в молния. Однако он поддерживает только файлы zip, а не gzip.

person Srikanth Reddy Lingala    schedule 24.05.2020