Relates :
|
|
Relates :
|
|
Relates :
|
|
Relates :
|
|
Relates :
|
OPERATING SYSTEM(S): All FULL JDK VERSION(S): java version "1.6.0_02" Java(TM) SE Runtime Environment (build 1.6.0_02-b06) Java HotSpot(TM) Client VM (build 1.6.0_02-b06, mixed mode) DESCRIPTION: When JDK 6 is used for unzipping a zip file > 2GB in size, the following exception is thrown: java.util.zip.ZipException: error in opening zip file at java.util.zip.ZipFile.open(Native Method) at java.util.zip.ZipFile.<init>(ZipFile.java:114) at java.util.zip.ZipFile.<init>(ZipFile.java:75) at UnZip.main(UnZip.java:65) Exact steps to reproduce 1. Create a zip file > 2GB in size. 2. Write a simple java program to unzip the file using a Java program The following testcase was obtained from another sun bug: import java.io.*; import java.util.*; import java.util.zip.*; public class unzip { public static final void copyInputStream (InputStream in,OutputStream out) throws IOException { byte[] buffer = new byte [1024]; int len; while ((len = in.read(buffer)) >= 0) out.write(buffer, 0, len); in.close(); out.close(); } public static final void main (String[] args) { Enumeration entries; ZipFile zipFile=null; if (args.length != 1){ System.err.println("Usage: Unzip zipfile"); return; } try{ zipFile = new ZipFile(args[0]); }catch(IOException ioe){System.out.println("error opening the zipfile");ioe.printStackTrace();} ZipEntry entry=null; entries = zipFile.entries(); while (entries.hasMoreElements()){ System.out.println("Constructing ZipFile..."); entry = ( ZipEntry ) entries.nextElement(); } if (entry.isDirectory()){ // Assume directories are stored parents first then children System.err.println("Extracting directory: " + entry.getName()); // This is not robust, just for demonstration purposes. (new File(entry.getName())).mkdir(); //continue; } System.err.println("Extracting file: " + entry.getName()); try{ copyInputStream(zipFile.getInputStream(entry),new BufferedOutputStream(new FileOutputStream(entry.getName()))); System.out.print("Check memory usage and press 'Enter'..."); System.in.read(); zipFile.close(); }catch(IOException ioe){ioe.printStackTrace();} } }
|