7021582: convert jar/zip code and tests to use try-with-resources
Reviewed-by: alanb, dholmes, sherman
--- a/jdk/src/share/classes/java/util/jar/JarFile.java Fri Feb 25 12:11:20 2011 -0800
+++ b/jdk/src/share/classes/java/util/jar/JarFile.java Fri Feb 25 02:06:10 2011 -0800
@@ -376,9 +376,9 @@
*/
private byte[] getBytes(ZipEntry ze) throws IOException {
byte[] b = new byte[(int)ze.getSize()];
- DataInputStream is = new DataInputStream(super.getInputStream(ze));
- is.readFully(b, 0, b.length);
- is.close();
+ try (DataInputStream is = new DataInputStream(super.getInputStream(ze))) {
+ is.readFully(b, 0, b.length);
+ }
return b;
}
@@ -480,10 +480,10 @@
JarEntry manEntry = getManEntry();
if (manEntry != null) {
byte[] b = new byte[(int)manEntry.getSize()];
- DataInputStream dis = new DataInputStream(
- super.getInputStream(manEntry));
- dis.readFully(b, 0, b.length);
- dis.close();
+ try (DataInputStream dis = new DataInputStream(
+ super.getInputStream(manEntry))) {
+ dis.readFully(b, 0, b.length);
+ }
int last = b.length - src.length;
int i = 0;
--- a/jdk/test/java/util/jar/JarEntry/GetMethodsReturnClones.java Fri Feb 25 12:11:20 2011 -0800
+++ b/jdk/test/java/util/jar/JarEntry/GetMethodsReturnClones.java Fri Feb 25 02:06:10 2011 -0800
@@ -40,22 +40,21 @@
System.getProperty("file.separator");
public static void main(String[] args) throws Exception {
- JarFile jf = new JarFile(BASE + "test.jar", true);
-
- byte[] buffer = new byte[8192];
- Enumeration<JarEntry> e = jf.entries();
- List<JarEntry> entries = new ArrayList<JarEntry>();
- while (e.hasMoreElements()) {
- JarEntry je = e.nextElement();
- entries.add(je);
- InputStream is = jf.getInputStream(je);
- while (is.read(buffer, 0, buffer.length) != -1) {
- // we just read. this will throw a SecurityException
- // if a signature/digest check fails.
+ List<JarEntry> entries = new ArrayList<>();
+ try (JarFile jf = new JarFile(BASE + "test.jar", true)) {
+ byte[] buffer = new byte[8192];
+ Enumeration<JarEntry> e = jf.entries();
+ while (e.hasMoreElements()) {
+ JarEntry je = e.nextElement();
+ entries.add(je);
+ try (InputStream is = jf.getInputStream(je)) {
+ while (is.read(buffer, 0, buffer.length) != -1) {
+ // we just read. this will throw a SecurityException
+ // if a signature/digest check fails.
+ }
+ }
}
- is.close();
}
- jf.close();
for (JarEntry je : entries) {
Certificate[] certs = je.getCertificates();
--- a/jdk/test/java/util/jar/JarFile/ScanSignedJar.java Fri Feb 25 12:11:20 2011 -0800
+++ b/jdk/test/java/util/jar/JarFile/ScanSignedJar.java Fri Feb 25 02:06:10 2011 -0800
@@ -37,25 +37,25 @@
public class ScanSignedJar {
public static void main(String[] args) throws Exception {
- JarFile file = new JarFile(new File(System.getProperty("test.src","."),
- "bogus-signerinfo-attr.jar"));
- byte[] buffer = new byte[8192];
boolean isSigned = false;
+ try (JarFile file = new JarFile(new File(System.getProperty("test.src","."),
+ "bogus-signerinfo-attr.jar"))) {
+ byte[] buffer = new byte[8192];
- for (Enumeration entries = file.entries(); entries.hasMoreElements();) {
- JarEntry entry = (JarEntry) entries.nextElement();
- InputStream jis = file.getInputStream(entry);
- while (jis.read(buffer, 0, buffer.length) != -1) {
- // read the jar entry
+ for (Enumeration entries = file.entries(); entries.hasMoreElements();) {
+ JarEntry entry = (JarEntry) entries.nextElement();
+ try (InputStream jis = file.getInputStream(entry)) {
+ while (jis.read(buffer, 0, buffer.length) != -1) {
+ // read the jar entry
+ }
+ }
+ if (entry.getCertificates() != null) {
+ isSigned = true;
+ }
+ System.out.println((isSigned ? "[signed] " : "\t ") +
+ entry.getName());
}
- jis.close();
- if (entry.getCertificates() != null) {
- isSigned = true;
- }
- System.out.println((isSigned ? "[signed] " : "\t ") +
- entry.getName());
}
- file.close();
if (isSigned) {
System.out.println("\nJAR file has signed entries");
--- a/jdk/test/java/util/zip/Available.java Fri Feb 25 12:11:20 2011 -0800
+++ b/jdk/test/java/util/zip/Available.java Fri Feb 25 02:06:10 2011 -0800
@@ -44,14 +44,17 @@
File f = new File(System.getProperty("test.src", "."), "input.jar");
// test ZipInputStream
- ZipInputStream z = new ZipInputStream(new FileInputStream(f));
- z.getNextEntry();
- tryAvail(z);
+ try (FileInputStream fis = new FileInputStream(f);
+ ZipInputStream z = new ZipInputStream(fis))
+ {
+ z.getNextEntry();
+ tryAvail(z);
+ }
// test InflaterInputStream
- ZipFile zfile = new ZipFile(f);
- tryAvail(zfile.getInputStream(zfile.getEntry("Available.java")));
- z.close();
+ try (ZipFile zfile = new ZipFile(f)) {
+ tryAvail(zfile.getInputStream(zfile.getEntry("Available.java")));
+ }
}
static void tryAvail(InputStream in) throws Exception {
@@ -67,20 +70,21 @@
// To reproduce 4401122
private static void test2() throws Exception {
File f = new File(System.getProperty("test.src", "."), "input.jar");
- ZipFile zf = new ZipFile(f);
- InputStream in = zf.getInputStream(zf.getEntry("Available.java"));
+ try (ZipFile zf = new ZipFile(f)) {
+ InputStream in = zf.getInputStream(zf.getEntry("Available.java"));
- int initialAvailable = in.available();
- in.read();
- if (in.available() != initialAvailable - 1)
- throw new RuntimeException("Available not decremented.");
- for(int j=0; j<initialAvailable-1; j++)
+ int initialAvailable = in.available();
in.read();
- if (in.available() != 0)
- throw new RuntimeException();
- in.close();
- if (in.available() != 0)
- throw new RuntimeException();
+ if (in.available() != initialAvailable - 1)
+ throw new RuntimeException("Available not decremented.");
+ for(int j=0; j<initialAvailable-1; j++)
+ in.read();
+ if (in.available() != 0)
+ throw new RuntimeException();
+ in.close();
+ if (in.available() != 0)
+ throw new RuntimeException();
+ }
}
}
--- a/jdk/test/java/util/zip/FileBuilder.java Fri Feb 25 12:11:20 2011 -0800
+++ b/jdk/test/java/util/zip/FileBuilder.java Fri Feb 25 02:06:10 2011 -0800
@@ -53,25 +53,24 @@
filetype.equals("SlightlyCompressible")))
usageError();
- RandomAccessFile raf = new RandomAccessFile(filename, "rw");
+ try (RandomAccessFile raf = new RandomAccessFile(filename, "rw")) {
+ if (filetype.equals("SlightlyCompressible")) {
+ byte[] randomBytes = new byte[16384];
+ byte[] nullBytes = new byte[randomBytes.length/10];
+ Random rand = new Random();
+ for (int i = 0; raf.length() < filesize; ++i) {
+ rand.nextBytes(randomBytes);
+ raf.write(nullBytes);
+ raf.write(randomBytes);
+ }
+ }
- if (filetype.equals("SlightlyCompressible")) {
- byte[] randomBytes = new byte[16384];
- byte[] nullBytes = new byte[randomBytes.length/10];
- Random rand = new Random();
- for (int i = 0; raf.length() < filesize; ++i) {
- rand.nextBytes(randomBytes);
- raf.write(nullBytes);
- raf.write(randomBytes);
- }
+ // Make sure file is exactly the requested size, and that
+ // a unique identifying trailer is written.
+ byte[] filenameBytes = filename.getBytes("UTF8");
+ raf.seek(filesize-filenameBytes.length);
+ raf.write(filenameBytes);
+ raf.setLength(filesize);
}
-
- // Make sure file is exactly the requested size, and that
- // a unique identifying trailer is written.
- byte[] filenameBytes = filename.getBytes("UTF8");
- raf.seek(filesize-filenameBytes.length);
- raf.write(filenameBytes);
- raf.setLength(filesize);
- raf.close();
}
}
--- a/jdk/test/java/util/zip/GZIP/Accordion.java Fri Feb 25 12:11:20 2011 -0800
+++ b/jdk/test/java/util/zip/GZIP/Accordion.java Fri Feb 25 02:06:10 2011 -0800
@@ -64,16 +64,13 @@
System.out.println("count="+count);
Thread compressor = new Thread() { public void run() {
- try {
- final GZIPOutputStream s = new GZIPOutputStream(out);
+ try (GZIPOutputStream s = new GZIPOutputStream(out)) {
for (long i = 0; i < count; i++)
s.write(data, 0, data.length);
- s.close();
} catch (Throwable t) { trouble = t; }}};
Thread uncompressor = new Thread() { public void run() {
- try {
- final GZIPInputStream s = new GZIPInputStream(in);
+ try (GZIPInputStream s = new GZIPInputStream(in)) {
final byte[] maybeBytes = new byte[data.length];
for (long i = 0; i < count; i++) {
readFully(s, maybeBytes);
@@ -82,7 +79,6 @@
}
if (s.read(maybeBytes, 0, 1) > 0)
throw new Exception("Unexpected NON-EOF");
- s.close();
} catch (Throwable t) { trouble = t; }}};
compressor.start(); uncompressor.start();
--- a/jdk/test/java/util/zip/GZIP/GZIPInputStreamRead.java Fri Feb 25 12:11:20 2011 -0800
+++ b/jdk/test/java/util/zip/GZIP/GZIPInputStreamRead.java Fri Feb 25 02:06:10 2011 -0800
@@ -44,9 +44,9 @@
rnd.nextBytes(src);
srcBAOS.write(src);
- GZIPOutputStream gzos = new GZIPOutputStream(dstBAOS);
- gzos.write(src);
- gzos.close();
+ try (GZIPOutputStream gzos = new GZIPOutputStream(dstBAOS)) {
+ gzos.write(src);
+ }
}
byte[] srcBytes = srcBAOS.toByteArray();
byte[] dstBytes = dstBAOS.toByteArray();
@@ -75,26 +75,26 @@
int readBufSize, int gzisBufSize)
throws Throwable
{
- GZIPInputStream gzis = new GZIPInputStream(
- new ByteArrayInputStream(dst),
- gzisBufSize);
- byte[] result = new byte[src.length + 10];
- byte[] buf = new byte[readBufSize];
- int n = 0;
- int off = 0;
+ try (ByteArrayInputStream bais = new ByteArrayInputStream(dst);
+ GZIPInputStream gzis = new GZIPInputStream(bais, gzisBufSize))
+ {
+ byte[] result = new byte[src.length + 10];
+ byte[] buf = new byte[readBufSize];
+ int n = 0;
+ int off = 0;
- while ((n = gzis.read(buf, 0, buf.length)) != -1) {
- System.arraycopy(buf, 0, result, off, n);
- off += n;
- // no range check, if overflow, let it fail
+ while ((n = gzis.read(buf, 0, buf.length)) != -1) {
+ System.arraycopy(buf, 0, result, off, n);
+ off += n;
+ // no range check, if overflow, let it fail
+ }
+ if (off != src.length || gzis.available() != 0 ||
+ !Arrays.equals(src, Arrays.copyOf(result, off))) {
+ throw new RuntimeException(
+ "GZIPInputStream reading failed! " +
+ ", src.len=" + src.length +
+ ", read=" + off);
+ }
}
- if (off != src.length || gzis.available() != 0 ||
- !Arrays.equals(src, Arrays.copyOf(result, off))) {
- throw new RuntimeException(
- "GZIPInputStream reading failed! " +
- ", src.len=" + src.length +
- ", read=" + off);
- }
- gzis.close();
}
}
--- a/jdk/test/java/util/zip/InflateIn_DeflateOut.java Fri Feb 25 12:11:20 2011 -0800
+++ b/jdk/test/java/util/zip/InflateIn_DeflateOut.java Fri Feb 25 02:06:10 2011 -0800
@@ -134,14 +134,14 @@
PairedOutputStream pos = new PairedOutputStream(pis);
pis.setPairedOutputStream(pos);
- DeflaterOutputStream dos = new DeflaterOutputStream(pos, true);
byte[] data = new byte[random.nextInt(1024 * 1024)];
byte[] buf = new byte[data.length];
random.nextBytes(data);
- dos.write(data);
- dos.close();
+ try (DeflaterOutputStream dos = new DeflaterOutputStream(pos, true)) {
+ dos.write(data);
+ }
check(readFully(iis, buf, buf.length));
check(Arrays.equals(data, buf));
}
--- a/jdk/test/java/util/zip/InfoZip.java Fri Feb 25 12:11:20 2011 -0800
+++ b/jdk/test/java/util/zip/InfoZip.java Fri Feb 25 02:06:10 2011 -0800
@@ -85,41 +85,37 @@
//----------------------------------------------------------------
File f = new File("InfoZip.zip");
- OutputStream os = new FileOutputStream(f);
- os.write(new byte[]
- {'P', 'K', 3, 4, 10, 0, 0, 0, 0, 0, -68, 8, 'k',
- '2', 'V', -7, 'm', 9, 20, 0, 0, 0, 20, 0, 0, 0,
- 8, 0, 21, 0, 's', 'o', 'm', 'e', 'F', 'i', 'l', 'e', 'U',
- 'T', 9, 0, 3, 't', '_', '1', 'B', 't', '_', '1', 'B', 'U',
- 'x', 4, 0, -14, 'v', 26, 4, 'M', 'e', 's', 's', 'a', 'g',
- 'e', ' ', 'i', 'n', ' ', 'a', ' ', 'B', 'o', 't', 't', 'l', 'e',
- 10, 'P', 'K', 1, 2, 23, 3, 10, 0, 0, 0, 0, 0,
- -68, 8, 'k', '2', 'V', -7, 'm', 9, 20, 0, 0, 0, 20,
- 0, 0, 0, 8, 0, 13, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, -92, -127, 0, 0, 0, 0, 's', 'o', 'm', 'e', 'F',
- 'i', 'l', 'e', 'U', 'T', 5, 0, 3, 't', '_', '1', 'B', 'U',
- 'x', 0, 0, 'P', 'K', 5, 6, 0, 0, 0, 0, 1, 0,
- 1, 0, 'C', 0, 0, 0, 'O', 0, 0, 0, 0, 0, });
- os.close();
+ try (OutputStream os = new FileOutputStream(f)) {
+ os.write(new byte[]
+ {'P', 'K', 3, 4, 10, 0, 0, 0, 0, 0, -68, 8, 'k',
+ '2', 'V', -7, 'm', 9, 20, 0, 0, 0, 20, 0, 0, 0,
+ 8, 0, 21, 0, 's', 'o', 'm', 'e', 'F', 'i', 'l', 'e', 'U',
+ 'T', 9, 0, 3, 't', '_', '1', 'B', 't', '_', '1', 'B', 'U',
+ 'x', 4, 0, -14, 'v', 26, 4, 'M', 'e', 's', 's', 'a', 'g',
+ 'e', ' ', 'i', 'n', ' ', 'a', ' ', 'B', 'o', 't', 't', 'l', 'e',
+ 10, 'P', 'K', 1, 2, 23, 3, 10, 0, 0, 0, 0, 0,
+ -68, 8, 'k', '2', 'V', -7, 'm', 9, 20, 0, 0, 0, 20,
+ 0, 0, 0, 8, 0, 13, 0, 0, 0, 0, 0, 1, 0,
+ 0, 0, -92, -127, 0, 0, 0, 0, 's', 'o', 'm', 'e', 'F',
+ 'i', 'l', 'e', 'U', 'T', 5, 0, 3, 't', '_', '1', 'B', 'U',
+ 'x', 0, 0, 'P', 'K', 5, 6, 0, 0, 0, 0, 1, 0,
+ 1, 0, 'C', 0, 0, 0, 'O', 0, 0, 0, 0, 0, });
+ }
- ZipFile zf = new ZipFile(f);
ZipEntry ze = null;
- try {
+ try (ZipFile zf = new ZipFile(f)) {
Enumeration<? extends ZipEntry> entries = zf.entries();
ze = entries.nextElement();
check(! entries.hasMoreElements());
checkZipEntry(ze, contents(zf, ze));
- } finally {
- zf.close();
}
- ZipInputStream is = new ZipInputStream(new FileInputStream(f));
- try {
+ try (FileInputStream fis = new FileInputStream(f);
+ ZipInputStream is = new ZipInputStream(fis))
+ {
ze = is.getNextEntry();
checkZipEntry(ze, contents(is));
check(is.getNextEntry() == null);
- } finally {
- is.close();
}
f.delete();
System.out.printf("passed = %d, failed = %d%n", passed, failed);
--- a/jdk/test/java/util/zip/LargeZip.java Fri Feb 25 12:11:20 2011 -0800
+++ b/jdk/test/java/util/zip/LargeZip.java Fri Feb 25 02:06:10 2011 -0800
@@ -98,19 +98,21 @@
}
data = baos.toByteArray();
- ZipOutputStream zos = new ZipOutputStream(
- new BufferedOutputStream(new FileOutputStream(largeFile)));
- long length = 0;
- while (length < fileSize) {
- ZipEntry ze = new ZipEntry("entry-" + length);
- lastEntryName = ze.getName();
- zos.putNextEntry(ze);
- zos.write(data, 0, data.length);
- zos.closeEntry();
- length = largeFile.length();
+ try (FileOutputStream fos = new FileOutputStream(largeFile);
+ BufferedOutputStream bos = new BufferedOutputStream(fos);
+ ZipOutputStream zos = new ZipOutputStream(bos))
+ {
+ long length = 0;
+ while (length < fileSize) {
+ ZipEntry ze = new ZipEntry("entry-" + length);
+ lastEntryName = ze.getName();
+ zos.putNextEntry(ze);
+ zos.write(data, 0, data.length);
+ zos.closeEntry();
+ length = largeFile.length();
+ }
+ System.out.println("Last entry written is " + lastEntryName);
}
- System.out.println("Last entry written is " + lastEntryName);
- zos.close();
}
static void readLargeZip1() throws Throwable {
@@ -143,33 +145,35 @@
static void readLargeZip2() throws Throwable {
- ZipInputStream zis = new ZipInputStream(
- new BufferedInputStream(new FileInputStream(largeFile)));
- ZipEntry entry = null;
- String entryName = null;
- int count = 0;
- while ((entry = zis.getNextEntry()) != null) {
- entryName = entry.getName();
- if (entryName.equals(lastEntryName)) {
- break;
+ try (FileInputStream fis = new FileInputStream(largeFile);
+ BufferedInputStream bis = new BufferedInputStream(fis);
+ ZipInputStream zis = new ZipInputStream(bis))
+ {
+ ZipEntry entry = null;
+ String entryName = null;
+ int count = 0;
+ while ((entry = zis.getNextEntry()) != null) {
+ entryName = entry.getName();
+ if (entryName.equals(lastEntryName)) {
+ break;
+ }
+ count++;
}
- count++;
+ System.out.println("Number of entries read: " + count);
+ System.out.println("Last entry read is " + entryName);
+ check(!entry.isDirectory());
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+ byte buf[] = new byte[4096];
+ int len;
+ while ((len = zis.read(buf)) >= 0) {
+ baos.write(buf, 0, len);
+ }
+ baos.close();
+ check(Arrays.equals(data, baos.toByteArray()));
+ check(zis.getNextEntry() == null);
}
- System.out.println("Number of entries read: " + count);
- System.out.println("Last entry read is " + entryName);
- check(!entry.isDirectory());
-
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
-
- byte buf[] = new byte[4096];
- int len;
- while ((len = zis.read(buf)) >= 0) {
- baos.write(buf, 0, len);
- }
- baos.close();
- check(Arrays.equals(data, baos.toByteArray()));
- check(zis.getNextEntry() == null);
- zis.close();
}
--- a/jdk/test/java/util/zip/TestEmptyZip.java Fri Feb 25 12:11:20 2011 -0800
+++ b/jdk/test/java/util/zip/TestEmptyZip.java Fri Feb 25 02:06:10 2011 -0800
@@ -78,67 +78,49 @@
pass();
}
}
- ZipInputStream zis = null;
- try {
- zis = new ZipInputStream(new FileInputStream(f));
+ try (FileInputStream fis = new FileInputStream(f);
+ ZipInputStream zis = new ZipInputStream(fis))
+ {
ZipEntry ze = zis.getNextEntry();
check(ze == null);
} catch (IOException ex) {
unexpected(ex);
- } finally {
- if (zis != null) zis.close();
}
}
static void write(File f) throws Exception {
- ZipOutputStream zos = null;
- try {
- zos = new ZipOutputStream(new FileOutputStream(f));
+ try (FileOutputStream fis = new FileOutputStream(f);
+ ZipOutputStream zos = new ZipOutputStream(fis))
+ {
zos.finish();
- zos.close();
pass();
} catch (Exception ex) {
unexpected(ex);
- } finally {
- if (zos != null) {
- zos.close();
- }
}
}
static void readFile(File f) throws Exception {
- ZipFile zf = null;
- try {
- zf = new ZipFile(f);
+ try (ZipFile zf = new ZipFile(f)) {
Enumeration e = zf.entries();
while (e.hasMoreElements()) {
ZipEntry entry = (ZipEntry) e.nextElement();
fail();
}
- zf.close();
pass();
} catch (Exception ex) {
unexpected(ex);
- } finally {
- if (zf != null) {
- zf.close();
- }
}
}
static void readStream(File f) throws Exception {
- ZipInputStream zis = null;
- try {
- zis = new ZipInputStream(new FileInputStream(f));
+ try (FileInputStream fis = new FileInputStream(f);
+ ZipInputStream zis = new ZipInputStream(fis))
+ {
ZipEntry ze = zis.getNextEntry();
check(ze == null);
byte[] buf = new byte[1024];
check(zis.read(buf, 0, 1024) == -1);
- } finally {
- if (zis != null) {
- zis.close();
- }
}
}
--- a/jdk/test/java/util/zip/ZipCoding.java Fri Feb 25 12:11:20 2011 -0800
+++ b/jdk/test/java/util/zip/ZipCoding.java Fri Feb 25 02:06:10 2011 -0800
@@ -57,59 +57,58 @@
String name, String comment, byte[] bb)
throws Exception
{
- ZipInputStream zis = new ZipInputStream(is, cs);
- ZipEntry e = zis.getNextEntry();
- if (e == null || ! name.equals(e.getName()))
- throw new RuntimeException("ZipIS name doesn't match!");
- byte[] bBuf = new byte[bb.length << 1];
- int n = zis.read(bBuf, 0, bBuf.length);
- if (n != bb.length ||
- !Arrays.equals(bb, Arrays.copyOf(bBuf, n))) {
- throw new RuntimeException("ZipIS content doesn't match!");
+ try (ZipInputStream zis = new ZipInputStream(is, cs)) {
+ ZipEntry e = zis.getNextEntry();
+ if (e == null || ! name.equals(e.getName()))
+ throw new RuntimeException("ZipIS name doesn't match!");
+ byte[] bBuf = new byte[bb.length << 1];
+ int n = zis.read(bBuf, 0, bBuf.length);
+ if (n != bb.length ||
+ !Arrays.equals(bb, Arrays.copyOf(bBuf, n))) {
+ throw new RuntimeException("ZipIS content doesn't match!");
+ }
}
- zis.close();
}
static void testZipFile(File f, Charset cs,
String name, String comment, byte[] bb)
throws Exception
{
- ZipFile zf = new ZipFile(f, cs);
- Enumeration<? extends ZipEntry> zes = zf.entries();
- ZipEntry e = (ZipEntry)zes.nextElement();
- if (! name.equals(e.getName()) ||
- ! comment.equals(e.getComment()))
- throw new RuntimeException("ZipFile: name/comment doesn't match!");
- InputStream is = zf.getInputStream(e);
- if (is == null)
- throw new RuntimeException("ZipFile: getIS failed!");
- byte[] bBuf = new byte[bb.length << 1];
- int n = 0;
- int nn =0;
- while ((nn = is.read(bBuf, n, bBuf.length-n)) != -1) {
- n += nn;
+ try (ZipFile zf = new ZipFile(f, cs)) {
+ Enumeration<? extends ZipEntry> zes = zf.entries();
+ ZipEntry e = (ZipEntry)zes.nextElement();
+ if (! name.equals(e.getName()) ||
+ ! comment.equals(e.getComment()))
+ throw new RuntimeException("ZipFile: name/comment doesn't match!");
+ InputStream is = zf.getInputStream(e);
+ if (is == null)
+ throw new RuntimeException("ZipFile: getIS failed!");
+ byte[] bBuf = new byte[bb.length << 1];
+ int n = 0;
+ int nn =0;
+ while ((nn = is.read(bBuf, n, bBuf.length-n)) != -1) {
+ n += nn;
+ }
+ if (n != bb.length ||
+ !Arrays.equals(bb, Arrays.copyOf(bBuf, n))) {
+ throw new RuntimeException("ZipFile content doesn't match!");
+ }
}
- if (n != bb.length ||
- !Arrays.equals(bb, Arrays.copyOf(bBuf, n))) {
- throw new RuntimeException("ZipFile content doesn't match!");
- }
- zf.close();
}
static void test(String csn, String name, String comment)
throws Exception
{
- byte[] bb = "This is the conent of the zipfile".getBytes("ISO-8859-1");
+ byte[] bb = "This is the content of the zipfile".getBytes("ISO-8859-1");
Charset cs = Charset.forName(csn);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
- ZipOutputStream zos = new ZipOutputStream(baos, cs);
-
- ZipEntry e = new ZipEntry(name);
- e.setComment(comment);
- zos.putNextEntry(e);
- zos.write(bb, 0, bb.length);
- zos.closeEntry();
- zos.close();
+ try (ZipOutputStream zos = new ZipOutputStream(baos, cs)) {
+ ZipEntry e = new ZipEntry(name);
+ e.setComment(comment);
+ zos.putNextEntry(e);
+ zos.write(bb, 0, bb.length);
+ zos.closeEntry();
+ }
ByteArrayInputStream bis = new ByteArrayInputStream(baos.toByteArray());
testZipInputStream(bis, cs, name, comment, bb);
@@ -121,9 +120,9 @@
File f = new File(new File(System.getProperty("test.dir", ".")),
"zfcoding.zip");
- FileOutputStream fos = new FileOutputStream(f);
- baos.writeTo(fos);
- fos.close();
+ try (FileOutputStream fos = new FileOutputStream(f)) {
+ baos.writeTo(fos);
+ }
testZipFile(f, cs, name, comment, bb);
if ("utf-8".equals(csn)) {
testZipFile(f, Charset.forName("MS932"), name, comment, bb);
--- a/jdk/test/java/util/zip/ZipFile/Assortment.java Fri Feb 25 12:11:20 2011 -0800
+++ b/jdk/test/java/util/zip/ZipFile/Assortment.java Fri Feb 25 02:06:10 2011 -0800
@@ -201,13 +201,12 @@
//----------------------------------------------------------------
// Write zip file using ZipOutputStream
//----------------------------------------------------------------
- ZipOutputStream zos = new ZipOutputStream(
- new FileOutputStream(zipName));
-
- for (Entry e : entries)
- e.write(zos);
-
- zos.close();
+ try (FileOutputStream fos = new FileOutputStream(zipName);
+ ZipOutputStream zos = new ZipOutputStream(fos))
+ {
+ for (Entry e : entries)
+ e.write(zos);
+ }
//----------------------------------------------------------------
// Verify zip file contents using JarFile class
--- a/jdk/test/java/util/zip/ZipFile/Comment.java Fri Feb 25 12:11:20 2011 -0800
+++ b/jdk/test/java/util/zip/ZipFile/Comment.java Fri Feb 25 02:06:10 2011 -0800
@@ -57,16 +57,15 @@
private static void writeZipFile(String name, String comment)
throws IOException
{
- ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(name));
- try {
+ try (FileOutputStream fos = new FileOutputStream(name);
+ ZipOutputStream zos = new ZipOutputStream(fos))
+ {
zos.setComment(comment);
ZipEntry ze = new ZipEntry(entryName);
ze.setMethod(ZipEntry.DEFLATED);
zos.putNextEntry(ze);
new DataOutputStream(zos).writeUTF(entryContents);
zos.closeEntry();
- } finally {
- zos.close();
}
}
@@ -74,30 +73,30 @@
throws Exception
{
// Check that Zip entry was correctly written.
- ZipFile zipFile = new ZipFile(name);
- ZipEntry zipEntry = zipFile.getEntry(entryName);
- InputStream is = zipFile.getInputStream(zipEntry);
- String result = new DataInputStream(is).readUTF();
- if (!result.equals(entryContents))
- throw new Exception("Entry contents corrupted");
+ try (ZipFile zipFile = new ZipFile(name)) {
+ ZipEntry zipEntry = zipFile.getEntry(entryName);
+ InputStream is = zipFile.getInputStream(zipEntry);
+ String result = new DataInputStream(is).readUTF();
+ if (!result.equals(entryContents))
+ throw new Exception("Entry contents corrupted");
+ }
- // Check that comment length was correctly written.
- RandomAccessFile file = new RandomAccessFile(name, "r");
- file.seek(file.length() - comment.length()
- - ZipFile.ENDHDR + ZipFile.ENDCOM);
- int b1 = file.readUnsignedByte();
- int b2 = file.readUnsignedByte();
- if (b1 + (b2 << 8) != comment.length())
- throw new Exception("Zip file comment length corrupted");
+ try (RandomAccessFile file = new RandomAccessFile(name, "r")) {
+ // Check that comment length was correctly written.
+ file.seek(file.length() - comment.length()
+ - ZipFile.ENDHDR + ZipFile.ENDCOM);
+ int b1 = file.readUnsignedByte();
+ int b2 = file.readUnsignedByte();
+ if (b1 + (b2 << 8) != comment.length())
+ throw new Exception("Zip file comment length corrupted");
- // Check that comment was correctly written.
- file.seek(file.length() - comment.length());
- byte [] bytes = new byte [comment.length()];
- file.readFully(bytes);
- zipFile.close();
- file.close();
- if (! comment.equals(new String(bytes, "UTF8")))
- throw new Exception("Zip file comment corrupted");
+ // Check that comment was correctly written.
+ file.seek(file.length() - comment.length());
+ byte [] bytes = new byte [comment.length()];
+ file.readFully(bytes);
+ if (! comment.equals(new String(bytes, "UTF8")))
+ throw new Exception("Zip file comment corrupted");
+ }
}
private static String buildComment(int length) {
--- a/jdk/test/java/util/zip/ZipFile/CopyJar.java Fri Feb 25 12:11:20 2011 -0800
+++ b/jdk/test/java/util/zip/ZipFile/CopyJar.java Fri Feb 25 02:06:10 2011 -0800
@@ -31,18 +31,18 @@
public class CopyJar {
public static void main(String args[]) throws Exception {
- ZipFile zf = new ZipFile(new File(System.getProperty("test.src", "."),
- "input.jar"));
- ZipEntry ze = zf.getEntry("ReleaseInflater.java");
- ZipOutputStream zos = new ZipOutputStream(new ByteArrayOutputStream());
- InputStream in = zf.getInputStream(ze);
- byte[] b = new byte[128];
- int n;
- zos.putNextEntry(ze);
- while((n = in.read(b)) != -1) {
- zos.write(b, 0, n);
+ try (ZipFile zf = new ZipFile(new File(System.getProperty("test.src", "."),
+ "input.jar"))) {
+ ZipEntry ze = zf.getEntry("ReleaseInflater.java");
+ ZipOutputStream zos = new ZipOutputStream(new ByteArrayOutputStream());
+ InputStream in = zf.getInputStream(ze);
+ byte[] b = new byte[128];
+ int n;
+ zos.putNextEntry(ze);
+ while((n = in.read(b)) != -1) {
+ zos.write(b, 0, n);
+ }
+ zos.close();
}
- zos.close();
- zf.close();
}
}
--- a/jdk/test/java/util/zip/ZipFile/CorruptedZipFiles.java Fri Feb 25 12:11:20 2011 -0800
+++ b/jdk/test/java/util/zip/ZipFile/CorruptedZipFiles.java Fri Feb 25 02:06:10 2011 -0800
@@ -47,21 +47,19 @@
}
public static void main(String[] args) throws Exception {
- ZipOutputStream zos = new ZipOutputStream(new FileOutputStream("x.zip"));
- try {
+ try (FileOutputStream fos = new FileOutputStream("x.zip");
+ ZipOutputStream zos = new ZipOutputStream(fos))
+ {
ZipEntry e = new ZipEntry("x");
zos.putNextEntry(e);
zos.write((int)'x');
- } finally {
- zos.close();
}
int len = (int)(new File("x.zip").length());
byte[] good = new byte[len];
- FileInputStream fis = new FileInputStream("x.zip");
- fis.read(good);
- fis.close();
- fis = null;
+ try (FileInputStream fis = new FileInputStream("x.zip")) {
+ fis.read(good);
+ }
new File("x.zip").delete();
int endpos = len - ENDHDR;
@@ -150,17 +148,14 @@
boolean getInputStream) {
String zipName = "bad" + (uniquifier++) + ".zip";
try {
- FileOutputStream fos = new FileOutputStream(zipName);
- fos.write(data);
- fos.close();
- ZipFile zf = new ZipFile(zipName);
- try {
+ try (FileOutputStream fos = new FileOutputStream(zipName)) {
+ fos.write(data);
+ }
+ try (ZipFile zf = new ZipFile(zipName)) {
if (getInputStream) {
InputStream is = zf.getInputStream(new ZipEntry("x"));
is.read();
}
- } finally {
- zf.close();
}
fail("Failed to throw expected ZipException");
} catch (ZipException e) {
@@ -170,8 +165,7 @@
unexpected(e);
} catch (Throwable t) {
unexpected(t);
- }
- finally {
+ } finally {
new File(zipName).delete();
}
}
--- a/jdk/test/java/util/zip/ZipFile/DeleteTempJar.java Fri Feb 25 12:11:20 2011 -0800
+++ b/jdk/test/java/util/zip/ZipFile/DeleteTempJar.java Fri Feb 25 02:06:10 2011 -0800
@@ -53,34 +53,34 @@
{
final File zf = File.createTempFile("deletetemp", ".jar");
zf.deleteOnExit();
- JarOutputStream jos = new JarOutputStream(
- new FileOutputStream(zf));
- JarEntry je = new JarEntry("entry");
- jos.putNextEntry(je);
- jos.write("hello, world".getBytes("ASCII"));
- jos.close();
+ try (FileOutputStream fos = new FileOutputStream(zf);
+ JarOutputStream jos = new JarOutputStream(fos))
+ {
+ JarEntry je = new JarEntry("entry");
+ jos.putNextEntry(je);
+ jos.write("hello, world".getBytes("ASCII"));
+ }
HttpServer server = HttpServer.create(
new InetSocketAddress((InetAddress) null, 0), 0);
HttpContext context = server.createContext("/",
new HttpHandler() {
public void handle(HttpExchange e) {
- try {
- FileInputStream fis = new FileInputStream(zf);
- e.sendResponseHeaders(200, zf.length());
- OutputStream os = e.getResponseBody();
- byte[] buf = new byte[1024];
- int count = 0;
- while ((count = fis.read(buf)) != -1) {
- os.write(buf, 0, count);
+ try (FileInputStream fis = new FileInputStream(zf)) {
+ e.sendResponseHeaders(200, zf.length());
+ OutputStream os = e.getResponseBody();
+ byte[] buf = new byte[1024];
+ int count = 0;
+ while ((count = fis.read(buf)) != -1) {
+ os.write(buf, 0, count);
+ }
+ } catch (Exception ex) {
+ unexpected(ex);
+ } finally {
+ e.close();
}
- fis.close();
- e.close();
- } catch (Exception ex) {
- unexpected(ex);
}
- }
- });
+ });
server.start();
URL url = new URL("jar:http://localhost:"
--- a/jdk/test/java/util/zip/ZipFile/EnumAfterClose.java Fri Feb 25 12:11:20 2011 -0800
+++ b/jdk/test/java/util/zip/ZipFile/EnumAfterClose.java Fri Feb 25 02:06:10 2011 -0800
@@ -33,10 +33,12 @@
public class EnumAfterClose {
public static void main(String args[]) throws Exception {
- ZipFile zf = new ZipFile(new File(System.getProperty("test.src", "."),
- "input.zip"));
- Enumeration e = zf.entries();
- zf.close();
+ Enumeration e;
+ try (ZipFile zf = new ZipFile(new File(System.getProperty("test.src", "."),
+ "input.zip"))) {
+ e = zf.entries();
+ }
+ // ensure that the ZipFile is closed before checking the Enumeration
try {
if (e.hasMoreElements()) {
ZipEntry ze = (ZipEntry)e.nextElement();
--- a/jdk/test/java/util/zip/ZipFile/GetDirEntry.java Fri Feb 25 12:11:20 2011 -0800
+++ b/jdk/test/java/util/zip/ZipFile/GetDirEntry.java Fri Feb 25 02:06:10 2011 -0800
@@ -32,12 +32,12 @@
public class GetDirEntry {
public static void main(String args[]) throws Exception {
- ZipFile zf = new ZipFile(new File(System.getProperty("test.src", "."),
- "input.jar"));
- ZipEntry ze = zf.getEntry("META-INF");
- if (ze == null) {
- throw new Exception("failed to find a directory entry");
+ try (ZipFile zf = new ZipFile(new File(System.getProperty("test.src", "."),
+ "input.jar"))) {
+ ZipEntry ze = zf.getEntry("META-INF");
+ if (ze == null) {
+ throw new Exception("failed to find a directory entry");
+ }
}
- zf.close();
}
}
--- a/jdk/test/java/util/zip/ZipFile/LargeZipFile.java Fri Feb 25 12:11:20 2011 -0800
+++ b/jdk/test/java/util/zip/ZipFile/LargeZipFile.java Fri Feb 25 02:06:10 2011 -0800
@@ -93,51 +93,50 @@
baos.write(bb.array(), 0, DATA_SIZE);
}
data = baos.toByteArray();
-
- ZipOutputStream zos = new ZipOutputStream(
- new BufferedOutputStream(new FileOutputStream(largeFile)));
- long length = 0;
- while (length < fileSize) {
- ZipEntry ze = new ZipEntry("entry-" + length);
- lastEntryName = ze.getName();
- zos.putNextEntry(ze);
- zos.write(data, 0, data.length);
- zos.closeEntry();
- length = largeFile.length();
+ try (FileOutputStream fos = new FileOutputStream(largeFile);
+ BufferedOutputStream bos = new BufferedOutputStream(fos);
+ ZipOutputStream zos = new ZipOutputStream(bos))
+ {
+ long length = 0;
+ while (length < fileSize) {
+ ZipEntry ze = new ZipEntry("entry-" + length);
+ lastEntryName = ze.getName();
+ zos.putNextEntry(ze);
+ zos.write(data, 0, data.length);
+ zos.closeEntry();
+ length = largeFile.length();
+ }
+ System.out.println("Last entry written is " + lastEntryName);
}
- System.out.println("Last entry written is " + lastEntryName);
- zos.close();
}
static void readLargeZip() throws Throwable {
- ZipFile zipFile = new ZipFile(largeFile);
- ZipEntry entry = null;
- String entryName = null;
- int count = 0;
- Enumeration<? extends ZipEntry> entries = zipFile.entries();
- while (entries.hasMoreElements()) {
- entry = entries.nextElement();
- entryName = entry.getName();
- count++;
+ try (ZipFile zipFile = new ZipFile(largeFile)) {
+ ZipEntry entry = null;
+ String entryName = null;
+ int count = 0;
+ Enumeration<? extends ZipEntry> entries = zipFile.entries();
+ while (entries.hasMoreElements()) {
+ entry = entries.nextElement();
+ entryName = entry.getName();
+ count++;
+ }
+ System.out.println("Number of entries read: " + count);
+ System.out.println("Last entry read is " + entryName);
+ check(!entry.isDirectory());
+ if (check(entryName.equals(lastEntryName))) {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ InputStream is = zipFile.getInputStream(entry);
+ byte buf[] = new byte[4096];
+ int len;
+ while ((len = is.read(buf)) >= 0) {
+ baos.write(buf, 0, len);
+ }
+ baos.close();
+ is.close();
+ check(Arrays.equals(data, baos.toByteArray()));
+ }
}
- System.out.println("Number of entries read: " + count);
- System.out.println("Last entry read is " + entryName);
- check(!entry.isDirectory());
- if (check(entryName.equals(lastEntryName))) {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- InputStream is = zipFile.getInputStream(entry);
- byte buf[] = new byte[4096];
- int len;
- while ((len = is.read(buf)) >= 0) {
- baos.write(buf, 0, len);
- }
- baos.close();
- is.close();
- check(Arrays.equals(data, baos.toByteArray()));
- }
- try {
- zipFile.close();
- } catch (IOException ioe) {/* what can you do */ }
}
//--------------------- Infrastructure ---------------------------
--- a/jdk/test/java/util/zip/ZipFile/ManyEntries.java Fri Feb 25 12:11:20 2011 -0800
+++ b/jdk/test/java/util/zip/ZipFile/ManyEntries.java Fri Feb 25 02:06:10 2011 -0800
@@ -55,10 +55,10 @@
File zipFile = new File(++uniquifier + ".zip");
try {
zipFile.delete();
- ZipOutputStream zos = new ZipOutputStream(
- new BufferedOutputStream(
- new FileOutputStream(zipFile)));
- try {
+ try (FileOutputStream fos = new FileOutputStream(zipFile);
+ BufferedOutputStream bos = new BufferedOutputStream(fos);
+ ZipOutputStream zos = new ZipOutputStream(bos))
+ {
for (int i = 0; i < N; i++) {
ZipEntry e = new ZipEntry("DIR/"+i);
e.setMethod(method);
@@ -75,13 +75,9 @@
zos.putNextEntry(e);
zos.write(i);
}
- } finally {
- zos.close();
- zos = null;
}
- ZipFile zip = zip = new ZipFile(zipFile);
- try {
+ try (ZipFile zip = new ZipFile(zipFile)) {
if (! (zip.size() == N))
throw new Exception("Bad ZipFile size: " + zip.size());
Enumeration entries = zip.entries();
@@ -104,11 +100,8 @@
}
if (entries.hasMoreElements())
throw new Exception("too many elements");
- } finally {
- zip.close();
}
- }
- finally {
+ } finally {
zipFile.delete();
}
}
--- a/jdk/test/java/util/zip/ZipFile/ManyZipFiles.java Fri Feb 25 12:11:20 2011 -0800
+++ b/jdk/test/java/util/zip/ZipFile/ManyZipFiles.java Fri Feb 25 02:06:10 2011 -0800
@@ -51,14 +51,14 @@
// Create some zip data
ByteArrayOutputStream baos = new ByteArrayOutputStream();
- ZipOutputStream zos = new ZipOutputStream(baos);
- ZipEntry ze = new ZipEntry("test");
- zos.putNextEntry(ze);
- byte[] hello = "hello, world".getBytes("ASCII");
- zos.write(hello, 0, hello.length);
- zos.closeEntry();
- zos.finish();
- zos.close();
+ try (ZipOutputStream zos = new ZipOutputStream(baos)) {
+ ZipEntry ze = new ZipEntry("test");
+ zos.putNextEntry(ze);
+ byte[] hello = "hello, world".getBytes("ASCII");
+ zos.write(hello, 0, hello.length);
+ zos.closeEntry();
+ zos.finish();
+ }
byte[] data = baos.toByteArray();
ZipFile zips[] = new ZipFile[numFiles];
@@ -90,9 +90,9 @@
for (int i = 0; i < numFiles; i++) {
File f = File.createTempFile("test", ".zip", tmpdir);
f.deleteOnExit();
- FileOutputStream fos = new FileOutputStream(f);
- fos.write(data, 0, data.length);
- fos.close();
+ try (FileOutputStream fos = new FileOutputStream(f)) {
+ fos.write(data, 0, data.length);
+ }
try {
zips[i] = new ZipFile(f);
} catch (Throwable t) {
@@ -102,11 +102,12 @@
}
}
} finally {
- // This finally block is due to bug 4171239. On windows, if the
+ // This finally block is due to bug 4171239. On Windows, if the
// file is still open at the end of the VM, deleteOnExit won't
// take place. "new ZipFile(...)" opens the zip file, so we have
- // to explicity close those opened above. This finally block can
- // be removed when 4171239 is fixed.
+ // to explicitly close those opened above. This finally block can
+ // be removed when 4171239 is fixed. See also 6357433, against which
+ // 4171239 was closed as a duplicate.
for (int i = 0; i < numFiles; i++) {
if (zips[i] != null) {
try {
--- a/jdk/test/java/util/zip/ZipFile/ReadAfterClose.java Fri Feb 25 12:11:20 2011 -0800
+++ b/jdk/test/java/util/zip/ZipFile/ReadAfterClose.java Fri Feb 25 02:06:10 2011 -0800
@@ -34,10 +34,13 @@
public class ReadAfterClose {
public static void main(String[] argv) throws Exception {
- ZipFile zf = new ZipFile(new File(System.getProperty("test.src","."),"crash.jar"));
- ZipEntry zent = zf.getEntry("Test.java");
- InputStream in = zf.getInputStream(zent);
- zf.close();
+ InputStream in;
+ try (ZipFile zf = new ZipFile(
+ new File(System.getProperty("test.src","."),"crash.jar"))) {
+ ZipEntry zent = zf.getEntry("Test.java");
+ in = zf.getInputStream(zent);
+ }
+ // ensure zf is closed at this point
try {
in.read();
} catch (IOException e) {
--- a/jdk/test/java/util/zip/ZipFile/ReadZip.java Fri Feb 25 12:11:20 2011 -0800
+++ b/jdk/test/java/util/zip/ZipFile/ReadZip.java Fri Feb 25 02:06:10 2011 -0800
@@ -27,6 +27,10 @@
*/
import java.io.*;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.nio.file.StandardCopyOption;
+import java.nio.file.StandardOpenOption;
import java.util.zip.*;
public class ReadZip {
@@ -38,71 +42,62 @@
}
public static void main(String args[]) throws Exception {
- ZipFile zf = new ZipFile(new File(System.getProperty("test.src", "."),
- "input.zip"));
-
- // Make sure we throw NPE on null objects
- try { unreached (zf.getEntry(null)); }
- catch (NullPointerException e) {}
+ try (ZipFile zf = new ZipFile(new File(System.getProperty("test.src", "."),
+ "input.zip"))) {
+ // Make sure we throw NPE on null objects
+ try { unreached (zf.getEntry(null)); }
+ catch (NullPointerException e) {}
- try { unreached (zf.getInputStream(null)); }
- catch (NullPointerException e) {}
+ try { unreached (zf.getInputStream(null)); }
+ catch (NullPointerException e) {}
- ZipEntry ze = zf.getEntry("ReadZip.java");
- if (ze == null) {
- throw new Exception("cannot read from zip file");
+ ZipEntry ze = zf.getEntry("ReadZip.java");
+ if (ze == null) {
+ throw new Exception("cannot read from zip file");
+ }
}
- zf.close();
// Make sure we can read the zip file that has some garbage
// bytes padded at the end.
- FileInputStream fis = new FileInputStream(
- new File(System.getProperty("test.src", "."),
- "input.zip"));
- File newZip = new File(System.getProperty("test.dir", "."),
- "input2.zip");
- FileOutputStream fos = new FileOutputStream(newZip);
+ File newZip = new File(System.getProperty("test.dir", "."), "input2.zip");
+ Files.copy(Paths.get(System.getProperty("test.src", ""), "input.zip"),
+ newZip.toPath(), StandardCopyOption.REPLACE_EXISTING);
- byte[] buf = new byte[1024];
- int n = 0;
- while ((n = fis.read(buf)) != -1) {
- fos.write(buf, 0, n);
+ // pad some bytes
+ try (OutputStream os = Files.newOutputStream(newZip.toPath(),
+ StandardOpenOption.APPEND)) {
+ os.write(1); os.write(3); os.write(5); os.write(7);
}
- fis.close();
- // pad some bytes
- fos.write(1); fos.write(3); fos.write(5); fos.write(7);
- fos.close();
- try {
- zf = new ZipFile(newZip);
- ze = zf.getEntry("ReadZip.java");
+
+ try (ZipFile zf = new ZipFile(newZip)) {
+ ZipEntry ze = zf.getEntry("ReadZip.java");
if (ze == null) {
throw new Exception("cannot read from zip file");
}
} finally {
- zf.close();
newZip.delete();
}
// Read zip file comment
try {
+ try (FileOutputStream fos = new FileOutputStream(newZip);
+ ZipOutputStream zos = new ZipOutputStream(fos))
+ {
+ ZipEntry ze = new ZipEntry("ZipEntry");
+ zos.putNextEntry(ze);
+ zos.write(1); zos.write(2); zos.write(3); zos.write(4);
+ zos.closeEntry();
+ zos.setComment("This is the comment for testing");
+ }
- ZipOutputStream zos = new ZipOutputStream(
- new FileOutputStream(newZip));
- ze = new ZipEntry("ZipEntry");
- zos.putNextEntry(ze);
- zos.write(1); zos.write(2); zos.write(3); zos.write(4);
- zos.closeEntry();
- zos.setComment("This is the comment for testing");
- zos.close();
-
- zf = new ZipFile(newZip);
- ze = zf.getEntry("ZipEntry");
- if (ze == null)
- throw new Exception("cannot read entry from zip file");
- if (!"This is the comment for testing".equals(zf.getComment()))
- throw new Exception("cannot read comment from zip file");
+ try (ZipFile zf = new ZipFile(newZip)) {
+ ZipEntry ze = zf.getEntry("ZipEntry");
+ if (ze == null)
+ throw new Exception("cannot read entry from zip file");
+ if (!"This is the comment for testing".equals(zf.getComment()))
+ throw new Exception("cannot read comment from zip file");
+ }
} finally {
- zf.close();
newZip.delete();
}
--- a/jdk/test/java/util/zip/ZipFile/ShortRead.java Fri Feb 25 12:11:20 2011 -0800
+++ b/jdk/test/java/util/zip/ZipFile/ShortRead.java Fri Feb 25 02:06:10 2011 -0800
@@ -38,27 +38,29 @@
try {
final String entryName = "abc";
final String data = "Data disponible";
- final ZipOutputStream zos =
- new ZipOutputStream(new FileOutputStream(zFile));
- zos.putNextEntry(new ZipEntry(entryName));
- zos.write(data.getBytes("ASCII"));
- zos.closeEntry();
- zos.close();
+ try (FileOutputStream fos = new FileOutputStream(zFile);
+ ZipOutputStream zos = new ZipOutputStream(fos))
+ {
+ zos.putNextEntry(new ZipEntry(entryName));
+ zos.write(data.getBytes("ASCII"));
+ zos.closeEntry();
+ }
- final ZipFile zipFile = new ZipFile(zFile);
- final ZipEntry zentry = zipFile.getEntry(entryName);
- final InputStream inputStream = zipFile.getInputStream(zentry);
- System.out.printf("size=%d csize=%d available=%d%n",
- zentry.getSize(),
- zentry.getCompressedSize(),
- inputStream.available());
- byte[] buf = new byte[data.length()];
- final int count = inputStream.read(buf);
- if (! new String(buf, "ASCII").equals(data) ||
- count != data.length())
- throw new Exception("short read?");
- zipFile.close();
+ try (ZipFile zipFile = new ZipFile(zFile)) {
+ final ZipEntry zentry = zipFile.getEntry(entryName);
+ final InputStream inputStream = zipFile.getInputStream(zentry);
+ System.out.printf("size=%d csize=%d available=%d%n",
+ zentry.getSize(),
+ zentry.getCompressedSize(),
+ inputStream.available());
+ byte[] buf = new byte[data.length()];
+ final int count = inputStream.read(buf);
+ if (! new String(buf, "ASCII").equals(data) ||
+ count != data.length())
+ throw new Exception("short read?");
+ }
+ } finally {
+ zFile.delete();
}
- finally { zFile.delete(); }
}
}
--- a/jdk/test/java/util/zip/zip.java Fri Feb 25 12:11:20 2011 -0800
+++ b/jdk/test/java/util/zip/zip.java Fri Feb 25 02:06:10 2011 -0800
@@ -322,57 +322,57 @@
void create(OutputStream out) throws IOException
{
- ZipOutputStream zos = new ZipOutputStream(out, cs);
- if (flag0) {
- zos.setMethod(ZipOutputStream.STORED);
+ try (ZipOutputStream zos = new ZipOutputStream(out, cs)) {
+ if (flag0) {
+ zos.setMethod(ZipOutputStream.STORED);
+ }
+ for (File file: entries) {
+ addFile(zos, file);
+ }
}
- for (File file: entries) {
- addFile(zos, file);
- }
- zos.close();
}
boolean update(InputStream in, OutputStream out) throws IOException
{
- ZipInputStream zis = new ZipInputStream(in, cs);
- ZipOutputStream zos = new ZipOutputStream(out, cs);
- ZipEntry e = null;
- byte[] buf = new byte[1024];
- int n = 0;
- boolean updateOk = true;
+ try (ZipInputStream zis = new ZipInputStream(in, cs);
+ ZipOutputStream zos = new ZipOutputStream(out, cs))
+ {
+ ZipEntry e = null;
+ byte[] buf = new byte[1024];
+ int n = 0;
+ boolean updateOk = true;
- // put the old entries first, replace if necessary
- while ((e = zis.getNextEntry()) != null) {
- String name = e.getName();
- if (!entryMap.containsKey(name)) { // copy the old stuff
- // do our own compression
- ZipEntry e2 = new ZipEntry(name);
- e2.setMethod(e.getMethod());
- e2.setTime(e.getTime());
- e2.setComment(e.getComment());
- e2.setExtra(e.getExtra());
- if (e.getMethod() == ZipEntry.STORED) {
- e2.setSize(e.getSize());
- e2.setCrc(e.getCrc());
+ // put the old entries first, replace if necessary
+ while ((e = zis.getNextEntry()) != null) {
+ String name = e.getName();
+ if (!entryMap.containsKey(name)) { // copy the old stuff
+ // do our own compression
+ ZipEntry e2 = new ZipEntry(name);
+ e2.setMethod(e.getMethod());
+ e2.setTime(e.getTime());
+ e2.setComment(e.getComment());
+ e2.setExtra(e.getExtra());
+ if (e.getMethod() == ZipEntry.STORED) {
+ e2.setSize(e.getSize());
+ e2.setCrc(e.getCrc());
+ }
+ zos.putNextEntry(e2);
+ while ((n = zis.read(buf, 0, buf.length)) != -1) {
+ zos.write(buf, 0, n);
+ }
+ } else { // replace with the new files
+ File f = entryMap.get(name);
+ addFile(zos, f);
+ entryMap.remove(name);
+ entries.remove(f);
}
- zos.putNextEntry(e2);
- while ((n = zis.read(buf, 0, buf.length)) != -1) {
- zos.write(buf, 0, n);
- }
- } else { // replace with the new files
- File f = entryMap.get(name);
+ }
+
+ // add the remaining new files
+ for (File f: entries) {
addFile(zos, f);
- entryMap.remove(name);
- entries.remove(f);
}
}
-
- // add the remaining new files
- for (File f: entries) {
- addFile(zos, f);
- }
- zis.close();
- zos.close();
return updateOk;
}
@@ -517,25 +517,25 @@
}
void extract(String fname, String files[]) throws IOException {
- ZipFile zf = new ZipFile(fname, cs);
- Set<ZipEntry> dirs = newDirSet();
- Enumeration<? extends ZipEntry> zes = zf.entries();
- while (zes.hasMoreElements()) {
- ZipEntry e = zes.nextElement();
- InputStream is;
- if (files == null) {
- dirs.add(extractFile(zf.getInputStream(e), e));
- } else {
- String name = e.getName();
- for (String file : files) {
- if (name.startsWith(file)) {
- dirs.add(extractFile(zf.getInputStream(e), e));
- break;
+ try (ZipFile zf = new ZipFile(fname, cs)) {
+ Set<ZipEntry> dirs = newDirSet();
+ Enumeration<? extends ZipEntry> zes = zf.entries();
+ while (zes.hasMoreElements()) {
+ ZipEntry e = zes.nextElement();
+ InputStream is;
+ if (files == null) {
+ dirs.add(extractFile(zf.getInputStream(e), e));
+ } else {
+ String name = e.getName();
+ for (String file : files) {
+ if (name.startsWith(file)) {
+ dirs.add(extractFile(zf.getInputStream(e), e));
+ break;
+ }
}
}
}
}
- zf.close();
updateLastModifiedTime(dirs);
}
@@ -607,12 +607,12 @@
}
void list(String fname, String files[]) throws IOException {
- ZipFile zf = new ZipFile(fname, cs);
- Enumeration<? extends ZipEntry> zes = zf.entries();
- while (zes.hasMoreElements()) {
- printEntry(zes.nextElement(), files);
+ try (ZipFile zf = new ZipFile(fname, cs)) {
+ Enumeration<? extends ZipEntry> zes = zf.entries();
+ while (zes.hasMoreElements()) {
+ printEntry(zes.nextElement(), files);
+ }
}
- zf.close();
}
void printEntry(ZipEntry e, String[] files) throws IOException {