[jboss-svn-commits] JBoss Common SVN: r3375 - jzipfile/trunk/src/main/java/org/jboss/jzipfile.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Jul 14 00:55:31 EDT 2009
Author: david.lloyd at jboss.com
Date: 2009-07-14 00:55:30 -0400 (Tue, 14 Jul 2009)
New Revision: 3375
Modified:
jzipfile/trunk/src/main/java/org/jboss/jzipfile/Zip.java
jzipfile/trunk/src/main/java/org/jboss/jzipfile/ZipCatalogBuilder.java
Log:
Add buffering, close Inflater when the input stream is done
Modified: jzipfile/trunk/src/main/java/org/jboss/jzipfile/Zip.java
===================================================================
--- jzipfile/trunk/src/main/java/org/jboss/jzipfile/Zip.java 2009-07-13 19:38:22 UTC (rev 3374)
+++ jzipfile/trunk/src/main/java/org/jboss/jzipfile/Zip.java 2009-07-14 04:55:30 UTC (rev 3375)
@@ -39,6 +39,7 @@
import java.util.HashSet;
import static java.lang.Math.min;
import static java.lang.Math.max;
+import com.jcraft.jzlib.ZInputStream;
/**
* Zip file manipulation methods.
@@ -240,7 +241,7 @@
return is;
}
case DEFLATE: {
- final LimitedInputStream is = new LimitedInputStream(new InflaterInputStream(new LimitedInputStream(inputStream, zipEntry.getCompressedSize()), new Inflater(true)), zipEntry.getSize());
+ final LimitedInputStream is = new LimitedInputStream(new JZFInflaterStream(new LimitedInputStream(inputStream, zipEntry.getCompressedSize())), zipEntry.getSize());
ok = true;
return is;
}
@@ -402,4 +403,25 @@
// convert to millis
return new GregorianCalendar(year, month - 1, day, hour, minute, second).getTimeInMillis();
}
+
+ private static final class JZFInflaterStream extends InflaterInputStream {
+ private final Inflater inf;
+
+ JZFInflaterStream(InputStream in) {
+ this(in, new Inflater(true));
+ }
+
+ public JZFInflaterStream(InputStream in, Inflater inf) {
+ super(in, inf, 4096);
+ this.inf = inf;
+ }
+
+ public void close() throws IOException {
+ try {
+ super.close();
+ } finally {
+ inf.end();
+ }
+ }
+ }
}
Modified: jzipfile/trunk/src/main/java/org/jboss/jzipfile/ZipCatalogBuilder.java
===================================================================
--- jzipfile/trunk/src/main/java/org/jboss/jzipfile/ZipCatalogBuilder.java 2009-07-13 19:38:22 UTC (rev 3374)
+++ jzipfile/trunk/src/main/java/org/jboss/jzipfile/ZipCatalogBuilder.java 2009-07-14 04:55:30 UTC (rev 3375)
@@ -31,6 +31,7 @@
import java.util.zip.ZipException;
import java.io.InputStream;
import java.io.IOException;
+import java.io.BufferedInputStream;
final class ZipCatalogBuilder {
private final Map<String, ZipEntry> entryMap = new LinkedHashMap<String, ZipEntry>();
@@ -40,10 +41,10 @@
}
void readDirectory(InputStream is) throws IOException {
- readDirectory(is instanceof ZipDataInputStream ? (ZipDataInputStream) is : new ZipDataInputStream(is));
+ readDirectory(is instanceof ZipDataInputStream ? (ZipDataInputStream) is : is instanceof BufferedInputStream ? new ZipDataInputStream(is) : new ZipDataInputStream(new BufferedInputStream(is)));
}
- void readDirectory(ZipDataInputStream is) throws IOException {
+ private void readDirectory(ZipDataInputStream is) throws IOException {
final List<ZipEntry> allEntries = this.allEntries;
final Map<String, ZipEntry> entryMap = this.entryMap;
try {
More information about the jboss-svn-commits
mailing list