Given the code fragment:
public static void main(String[] args) throws IOException {
BufferedReader brCopy = null;
try (BufferedReader br = new BufferedReader(new FileReader("employee.txt"))) { // line n1
br.lines().forEach(c -> System.out.println(c));
brCopy = br;//line n2
}
brCopy.ready(); //line n3;
}
Assume that the ready method of the BufferedReader, when called on a closed BufferedReader, throws an exception, and employee.txt is accessible and contains valid text.
What is the result?
A. A compilation error occurs at line n3.
B. A compilation error occurs at line n1.
C. A compilation error occurs at line n2.
D. The code prints the content of the employee.txt file and throws an exception at line n3.
題解
br變數所參考到的BufferedReader物件為try-with-resources結構的資源,因此在離開try-with-resources結構的try區塊後,資源就會被釋放(BufferedReader物件會close)。
line n3的部份在BufferedReader物件被close之後呼叫ready方法,所以會拋出IOException。