Charset charset = Charset.forName("US-ASCII");
try (BufferedReader reader = Files.newBufferedReader(file, charset)) {
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException x) {
System.err.format("IOException: %s%n", x);
}
我在The Java Tutorials上看到了这样一段代码,其中括号声明位于关键字'try'之后。这有效吗?为什么不能eclipse识别它并报告语法错误?
答案 0 :(得分:2)
这是Java 7的try with resource功能。
您需要将Eclipse的编译器合规性级别设置为1.7才能识别语法。
您可以在Window > Preferences > Java > Compiler
下全局设置,也可以只需右键单击项目,然后执行以下操作:
答案 1 :(得分:1)
这是Java 7中引入的try-with-resource语法。它是supported by Eclise,这就是它没有报告任何错误的原因:
顺便说一句,您的代码也使用了Java 7中引入的Files
。
答案 2 :(得分:1)
Eclipse清楚地表明了为什么这不是有效的语法:
将项目编译器合规性设置设置为1.7
将项目JRE构建路径条目设置为“JavaSE-1.7”
这意味着,您已安装Java 6,但教程
(...)主要描述Java SE 7中的功能。
答案 3 :(得分:0)
不,它无效。试试这个:
Charset charset = Charset.forName("US-ASCII");
try {
BufferedReader reader = Files.newBufferedReader(file, charset);
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException x) {
System.err.format("IOException: %s%n", x);
}