Bug (old?) in ZipEntry?

Martin Egholm Nielsen martin@egholm-nielsen.dk
Fri Sep 9 12:26:00 GMT 2005


Hi there,
I'm seing quite an odd thing (read: maybe a bug) with the 
modification-dates returned from ZipEntry.
This may be an old bug fixed in a gcj version newer than my 3.4.3.
Nevertheless, I have the simple source given below that just enumerates 
each entry in a zip file and prints out the modification date.
I'm using both WinZip and "zip" from (a recent) Cygwin.
When running the program with Sun's Java I get:
=== SUN ===
$ java -cp . men.zipdate.ZipDates fromzip.zip
ZipDates.java date: 1126260112000 Fri Sep 09 12:01:52 CEST 2005
$ java -cp . men.zipdate.ZipDates fromwinzip.zip
ZipDates.java date: 1126260114000 Fri Sep 09 12:01:54 CEST 2005
Hence, the same dates. As expected... However, when I try with GCJ I get:
=== GCJ ===
# ./zipdates fromzip.zip
ZipDates.java date: 313906034000 Thu Dec 13 03:07:14 GMT-01:00 1979
# ./zipdates fromwinzip.zip
ZipDates.java date: 1126270914231 Fri Sep 09 12:01:54 GMT-01:00 2005
That is, only the winzip-archive's entry-date is reported correctly.
The archives are identical to the ones used in the Sun test above...
But as I say, may an old bug?!
BR,
 Martin Egholm
=== File: ZipDates.java ===
package men.zipdate;
import java.io.IOException;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
public class ZipDates
{
 public static void main(String[] args) throws IOException
 {
 if (args.length < 1)
 {
 System.out.println("Missing filename argument...");
 return;
 } // if
 else
 {
 ZipFile zf = new ZipFile(args[0]);
 Enumeration entries = zf.entries();
 while (entries.hasMoreElements())
 {
 ZipEntry entry = (ZipEntry) entries.nextElement();
 System.out.println(entry.getName() + "\tdate: " + entry.getTime()
 + "\t" + new java.util.Date(entry.getTime()));
 } // while
 } // else
 } // main
} // ZipDates


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /