我不得不将我的学校项目JDK 1.7切换到1.6。我在平台1.6上创建了一个新项目并复制了所有打包在我的项目中,似乎1.6不支持这种缓冲读卡器,请问有什么帮助吗?我需要从src中的文件中读取。如果我使用Scanner,我应该没事吗?
try (BufferedReader br = new BufferedReader(new FileReader(sDataPath))){
Error " Resource specification not allowed here for source level below 1.7"
答案 0 :(得分:7)
这不是BufferedReader
成为问题的问题 - 它是您的try-with-resources statement,它是在Java 7中引入的。您需要手动关闭阅读器:
BufferedReader reader = new BufferedReader(new FileReader(sDataPath));
try {
...
} finally {
reader.close();
}
顺便说一句,我建议使用FileReader
反对 - 使用InputStreamReader
包裹FileInputStream
,以便指定编码。
哦,如果您被允许使用外部库,您可能会发现Guava将使您的资源处理更简单:)
答案 1 :(得分:2)
Java 7允许使用try()
构造自动处理资源。 Java 6没有它。你需要写一些类似的东西:
BufferedReader br=null
try {
br = new BufferedReader(...); // create and use BufferedReader here
}
finally {
if(br!=null) br.close();
}