当我想关闭InputFileStream和OutputFileStream对象时,eclipse说我需要捕获IOException,因此在捕获这些异常之后这是我的代码。 正如您所看到的,我正在捕获两次IOException。是否有一种更简单的方法,我只能有一个块来捕获in.close()和in.read()的IOException?
public class ByteStream {
public static void main(String[] args) {
FileInputStream in = null;
try {
in = new FileInputStream("testdata.txt");
int nextByte;
while((nextByte = in.read()) != -1){
System.out.println(nextByte + "-");
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (in != null){
try {
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
答案 0 :(得分:0)
使用Java 7中的try-with-resources
语法
try (FileInputStream in = new FileInputStream("testdata.txt");){
int nextByte;
while ((nextByte = in.read()) != -1) {
System.out.println(nextByte + "-");
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
编译器将负责将上述代码转换为关闭in
InputStream
或在AutoCloseable
部分中声明和实例化的任何其他()
对象的代码。 try
表达式。