Добавление файла в архив с помощью метода putNextEntry()

308
11 мая 2017, 10:57

Объясните пожалуйста, как происходит добавление объекта ZipEntry в архив с помощью метода putNextEntry() класса ZipOutputStream, так как я новичок не получается разобраться в этом методе.

сам метод класса ZipOutputStream:

public void putNextEntry(ZipEntry e) throws IOException {
    ensureOpen();
    if (current != null) {
        closeEntry();       // close previous entry
    }
    if (e.xdostime == -1) {
        // by default, do NOT use extended timestamps in extra
        // data, for now.
        e.setTime(System.currentTimeMillis());
    }
    if (e.method == -1) {
        e.method = method;  // use default method
    }
    // store size, compressed size, and crc-32 in LOC header
    e.flag = 0;
    switch (e.method) {
    case DEFLATED:
        // store size, compressed size, and crc-32 in data descriptor
        // immediately following the compressed entry data
        if (e.size  == -1 || e.csize == -1 || e.crc   == -1)
            e.flag = 8;
        break;
    case STORED:
        // compressed size, uncompressed size, and crc-32 must all be
        // set for entries using STORED compression method
        if (e.size == -1) {
            e.size = e.csize;
        } else if (e.csize == -1) {
            e.csize = e.size;
        } else if (e.size != e.csize) {
            throw new ZipException(
                "STORED entry where compressed != uncompressed size");
        }
        if (e.size == -1 || e.crc == -1) {
            throw new ZipException(
                "STORED entry missing size, compressed size, or crc-32");
        }
        break;
    default:
        throw new ZipException("unsupported compression method");
    }
    if (! names.add(e.name)) {
        throw new ZipException("duplicate entry: " + e.name);
    }
    if (zc.isUTF8())
        e.flag |= EFS;
    current = new XEntry(e, written);
    xentries.add(current);
    writeLOC(current);
}
Answer 1

Надеюсь данный примет тебе поможет.

// Create the ZIP file
ZipOutputStream out = new ZipOutputStream(new FileOutputStream("my.zip"));
// loop through the files to add to zip
for (int i=0; i<filenames.length; i++)
{
// open file
FileInputStream in = new FileInputStream(filenames[i]);
// Add new entry to zip
out.putNextEntry(new ZipEntry(filenames[i]));
// copy file to zip
// see http://helpdesk.objects.com.au/java/how-do-i-copy-one-stream-to-another-using-java
int len;
while ((len = in.read(buf)) >= 0)
{
    out.write(buf, 0, len);
}
// Close the entry and file
out.closeEntry();
in.close();
}
// Close the ZIP file
out.close();
READ ALSO
запуск web проекта на java выдает ошибку

запуск web проекта на java выдает ошибку

При запуске web проекта на java выдает ошибку

292
Исключение SSLHandshakeException

Исключение SSLHandshakeException

Вот такой код

326
Как реализовать выпадающий текст?

Как реализовать выпадающий текст?

ЗдравствуйтеПодскажите как в android реализовать выпадающий текст, как показано на изображении

264
Путь к файлу не видит JavaFX

Путь к файлу не видит JavaFX

Пытаюсь css к кнопке прикрутить, но вылазит ошибка

366