Before java 7, we used to write explicit code for closing file in finally block by using try-finally block like this >
/** Copyright (c), AnkitMittal JavaMadeSoEasy.com */
public class TryWithResourseTest {
public static void main(String[] args) throws IOException {
InputStream inputStream = null;
try{
inputStream = new FileInputStream("c:/txtFile.txt");
//code......
}finally{
if(inputStream!=null)
inputStream.close();
}
}
}
|
In java 7, using Try-with-resources >
- we need not to write explicit code for closing file.
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
/** Copyright (c), AnkitMittal JavaMadeSoEasy.com */
public class TryWithResourseTest {
public static void main(String[] args) throws IOException {
try (InputStream inputStream = new FileInputStream("c:/txtFile.txt")) {
//code...
}
}
}
|
Note : Above program will execute properly provided file is found at specified directory.
Now, question comes why we need not to close file when we are using Try-with-resources?
Because FileInputStream implements java.lang.AutoCloseable interface (AutoCloseable interface’s close method automatically closes resources which are no longer needed.)
Which classes can be used inside Try-with-resources?
All the classes which implements AutoCloseable interface can be used inside Try-with-resources.
Using multiple resources inside Try-with-resources >
Try-with-resources allows us to use multiple resources inside it, all that we need to do is separate resources by semicolon (;)
/** Copyright (c), AnkitMittal JavaMadeSoEasy.com */
public class TryWithResourseTest {
public static void main(String[] args) throws IOException {
try (InputStream inputStream = new FileInputStream("c:/txtFile.txt") ;
InputStream bInputStream = new BufferedInputStream(inputStream) ){
//code...
}
}
}
|
Note : Above program will execute properly provided file is found at specified directory.
RELATED LINKS>