与BufferedReader的JRE6兼容性问题

时间:2014-06-06 16:48:18

标签: java bufferedreader

我的代码适用于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

你能在这里解释一下这个问题吗?解决办法是什么?感谢

3 个答案:

答案 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) {

}