你说的这种情况用的少,但有时候也有其使用的必要性,举个例子:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class FileRead {
BufferedReader bufReader = null;
public FileRead() {
try {
bufReader = new BufferedReader(new FileReader(new File("C://Log.log")));
try {
String line = bufReader.readLine();
while (null != line) {
System.out.println(line);
line = bufReader.readLine();
}
} catch (IOException e) {
System.out.println("文件读取失败");
} finally {
dispose();
}
} catch (FileNotFoundException e) {
System.out.println("文件不存在");
}
}
public void dispose() {
try {
bufReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new FileRead();
}
}
使用try-catch嵌套来解决文件关闭的问题,当文件不存在时创建bufReader对象失败,所以不会去执行第二层的try-catch了,直接抛出异常。也不需要去关闭流了。
如果使用一层try-catch的话,如果文件不存在,则bufReader对象,也就不会创建成功,如果去finally中关闭的话,如果不判空去关闭,就会出现空指针异常 |