Remove a bunch of file descriptor leaks
Bug:
Change-Id: Idba1848b5082f95494a00c1b0fcf15a6aeee3737
diff --git a/src/test/examplesAndroidP/invokecustom/TestGenerator.java b/src/test/examplesAndroidP/invokecustom/TestGenerator.java
index 375dc34..7ee4bdc 100644
--- a/src/test/examplesAndroidP/invokecustom/TestGenerator.java
+++ b/src/test/examplesAndroidP/invokecustom/TestGenerator.java
@@ -3,13 +3,14 @@
// BSD-style license that can be found in the LICENSE file.
package invokecustom;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
+
import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
import java.lang.invoke.CallSite;
-import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;
+import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import org.objectweb.asm.ClassReader;
@@ -36,19 +37,23 @@
}
private void generateTests() throws IOException {
- ClassReader cr = new ClassReader(new FileInputStream(classNamePath.toFile()));
- ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS | ClassWriter.COMPUTE_FRAMES);
- cr.accept(
- new ClassVisitor(Opcodes.ASM6, cw) {
- @Override
- public void visitEnd() {
- generateMethodTest1(cw);
- generateMethodTest2(cw);
- generateMethodMain(cw);
- super.visitEnd();
- }
- }, 0);
- new FileOutputStream(classNamePath.toFile()).write(cw.toByteArray());
+ try (InputStream inputStream = Files.newInputStream(classNamePath)) {
+ ClassReader cr = new ClassReader(inputStream);
+ ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS | ClassWriter.COMPUTE_FRAMES);
+ cr.accept(
+ new ClassVisitor(Opcodes.ASM6, cw) {
+ @Override
+ public void visitEnd() {
+ generateMethodTest1(cw);
+ generateMethodTest2(cw);
+ generateMethodMain(cw);
+ super.visitEnd();
+ }
+ }, 0);
+ try (OutputStream output = Files.newOutputStream(classNamePath)) {
+ output.write(cw.toByteArray());
+ }
+ }
}
/* Generate main method that only call all test methods. */