From f31c4ba31df6f7006e20513879d398fe25327bef Mon Sep 17 00:00:00 2001 From: JD <46619169+rudiejd@users.noreply.github.com> Date: Thu, 23 Sep 2021 14:21:34 -0400 Subject: [PATCH] 0002382: file creation dates not retained in target (#172) --- .../org/jumpmind/symmetric/file/FileSyncZipDataWriter.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/file/FileSyncZipDataWriter.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/file/FileSyncZipDataWriter.java index 8daa9c7efa..7f1233ae63 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/file/FileSyncZipDataWriter.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/file/FileSyncZipDataWriter.java @@ -24,10 +24,13 @@ import java.io.FileInputStream; import java.io.IOException; import java.nio.charset.Charset; +import java.nio.file.Files; +import java.nio.file.attribute.BasicFileAttributes; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.TimeUnit; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; @@ -238,6 +241,10 @@ public void end(Batch batch, boolean inError) { if (file.exists()) { byteCount += file.length(); ZipEntry entry = new ZipEntry(entryName.toString()); + BasicFileAttributes attr = Files.readAttributes(file.toPath(), BasicFileAttributes.class); + // note: as of 8/21 getting the creation time won't work on unix file systems EVEN IF THEY HAVE EXT4 + // you also cannot set the creation time on unix systems (birth date) using setCreationTime, so this only works for windows + entry.setCreationTime(attr.creationTime()); entry.setSize(file.length()); entry.setTime(file.lastModified()); zos.putNextEntry(entry);