The below code produces a zip file that can be opened in WinZip 8.1 when compiled with Sun JRE 1.4.1_01. When compiled with GCJ 3.4.0 the zip file is produced but WinZip says it's corrupt.
Is this a bug in GCJ or am I misunderstanding how java.util.zip works in libgcj? Thanks. Usage: Pass in two arguments to class. First arg is name of archive and second is the name of the file you want to add to the archive. ************************************************************************ import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.zip.Deflater; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; public class ZipMain { /** * */ public ZipMain() { super(); } public static void main(String[] args) { String sArchive = args[0]; String sFile = args[1]; if (sArchive==null || sFile==null || sArchive.length()==0 || sFile.length()==0){ return; } File f = new File(sFile); if (!f.exists()){ return; } ZipOutputStream oArchive = null; File fArchive = new File(sArchive); try { //open archive oArchive = new ZipOutputStream(new FileOutputStream(fArchive)); oArchive.setLevel(Deflater.DEFAULT_COMPRESSION); //add file ZipEntry zipEntry = new ZipEntry(f.toString()); FileInputStream fin = new FileInputStream(f); BufferedInputStream in = new BufferedInputStream(fin); oArchive.putNextEntry(zipEntry); byte[] buf = new byte[1024]; int len; while ((len = in.read(buf)) >= 0) { oArchive.write(buf, 0, len); } //clean up in.close(); oArchive.closeEntry(); oArchive.close(); } catch (Exception e){ e.printStackTrace(); } } } -- Summary: Creating archives with java.util.zip Product: gcc Version: 3.4.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: libgcj AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: wayne dot gray at coynetextileservices dot com CC: gcc-bugs at gcc dot gnu dot org,java-prs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19109