Java 7 : The New try-with-resources Statement
Join the DZone community and get the full member experience.
Join For FreeFrom build 105, the compiler and runtime of the Java 7 Releases have support for the new form of try : try-with-resources, also called ARM (Automatic Resource Management) blocks.
This new statement makes working with streams and all kind of closeable resources easier. For example, in Java, you can have this kind of code :
private static void customBufferStreamCopy(File source, File target) {
InputStream fis = null;
OutputStream fos = null;
try {
fis = new FileInputStream(source);
fos = new FileOutputStream(target);
byte[] buf = new byte[8192];
int i;
while ((i = fis.read(buf)) != -1) {
fos.write(buf, 0, i);
}
}
catch (Exception e) {
e.printStackTrace();
} finally {
close(fis);
close(fos);
}
}
private static void close(Closeable closable) {
if (closable != null) {
try {
closable.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
A little bit heavy, isn’t it ? This is only an example, here the management of exceptions is not good.
So let’s use try-with-resources statement to simplify this code, which becomes :
private static void customBufferStreamCopy(File source, File target) {
try (InputStream fis = new FileInputStream(source);
OutputStream fos = new FileOutputStream(target)){
byte[] buf = new byte[8192];
int i;
while ((i = fis.read(buf)) != -1) {
fos.write(buf, 0, i);
}
}
catch (Exception e) {
e.printStackTrace();
}
}
A lot cleaner, no ? With that code, the resources are automatically closed after the try. In the try resources list, you can declare several resources, but all these resources must implement the java.lang.AutoCloseable interface.
If you want more information, about this new statement read try-with-resources specifications.
From http://www.baptiste-wicht.com/2010/08/java-7-try-with-resources-statement/
Opinions expressed by DZone contributors are their own.
Trending
-
Essential Architecture Framework: In the World of Overengineering, Being Essential Is the Answer
-
Top Six React Development Tools
-
Knowing and Valuing Apache Kafka’s ISR (In-Sync Replicas)
-
4 Expert Tips for High Availability and Disaster Recovery of Your Cloud Deployment
Comments