java.util.zip.ZipEntry # setCreationTime не работает - PullRequest
0 голосов
/ 23 сентября 2019

Я ожидаю установить файл zip-записи creationTime и lastModifedTime другое время.

код:

static class Data {
    String filename;
    byte[] body;
}

private static void createZipExample(List<Data> dataList, File out) throws IOException {
    ZonedDateTime now = LocalDateTime.now().atZone(ZoneId.systemDefault());

    try (ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(out))) {
        byte[] buffer = new byte[1024];
        for (Data data : dataList) {
            final byte[] bytes = data.body;
            try (InputStream in = new ByteArrayInputStream(bytes)) {
                ZipEntry entry = new ZipEntry(data.filename);

                // How set other time to creationTime & lastModifiedTime?
                entry.setCreationTime(FileTime.from(now.minusYears(1).toInstant()));
                entry.setLastModifiedTime(FileTime.from(now.minusYears(2).toInstant()));

                zos.putNextEntry(entry);
                int len;
                while ((len = in.read(buffer)) > 0) zos.write(buffer, 0, len);
            }
        }
        zos.closeEntry();
    }
}

Но я распаковываю выходной zip-файл и проверяю информацию, затем creationTime то же самое, что и modifiedTime (now.minusYears(2)).

Почему?

...