我的代码适用于jre7而不是jre6。是否有可能使其与jre6兼容:
try (BufferedReader br = new BufferedReader(new FileReader(fileName))) {
} catch(IOException e) {
}
Eclipse会提示错误说明:
The resource type BufferedReader does not implement java.lang.AutoCloseable
你能在这里解释一下这个问题吗?解决办法是什么?感谢
答案 0 :(得分:3)
使用经典try
子句替换新的finally
构造:
BufferedReader br = new BufferedReader(new FileReader(fileName));
try {
} catch(IOException e) {
} finally {
br.close();
}
这将在任何情况下关闭阅读器,如果从内部try块抛出异常也是如此。在try-with-resources构造中只能使用AutoCloseable个类,而java 6 BufferedReader
则不能使用(java 7 BufferedReader
)。
答案 1 :(得分:1)
您使用try-with-resources语句。实现java.lang.AutoCloseable的所有对象都可以用作资源。 BufferedReader没有从Java 6中的AutoCloseble扩展。这就是您看到此错误的原因。
有一个很好的教程解释差异here。
答案 2 :(得分:1)
以下代码使用try
资源类型AutoClosable
try (BufferedReader br = new BufferedReader(new FileReader(fileName))) {
} catch(IOException e) {
}
这是Java7中添加的功能,因此它在Java7中运行良好。
但同样在Java 6或更低版本中不起作用。
Java 6或更低版本支持没有autoclose类型资源的简单尝试。
所以你的代码应该如下面的java 6
BufferedReader br = new BufferedReader(new FileReader(fileName));
try{
//do whatever you want
} catch(IOException e) {
}