2

我不得不将我的学校项目 JDK 1.7 切换到 1.6。我在平台 1.6 上创建了一个新项目,并将所有内容复制到我的项目中,似乎 1.6 不支持这种缓冲阅读器,请帮忙?我需要从 src 中的文件中读取。如果我使用扫描仪应该可以吗?

try (BufferedReader br = new BufferedReader(new FileReader(sDataPath))){

Error " Resource specification not allowed here for source level below 1.7" 
4

2 回答 2

8

这不是BufferedReader问题 - 这是您的try-with-resources 语句,它是在 Java 7 中引入的。您需要手动关闭阅读器:

BufferedReader reader = new BufferedReader(new FileReader(sDataPath));
try {
    ...
} finally {
    reader.close();
}

顺便说一句,我建议不要使用FileReader- 使用InputStreamReader包装 aFileInputStream以便您可以指定编码。

哦,如果您被允许使用外部库,您可能会发现Guava将使您的资源处理更简单:)

于 2012-04-12T19:53:34.663 回答
3

Java 7 允许使用该try()结构自动处理资源。Java 6 没有它。您需要编写如下内容:

BufferedReader br=null
try {
    br = new BufferedReader(...); // create and use BufferedReader here
}
finally {
    if(br!=null) br.close();
}
于 2012-04-12T19:54:32.877 回答