使用try with resource在java中逐行读取文本文件

使用try with resource在java中逐行读取文本文件,java,io,Java,Io,例如,这里有一种逐行读取文本文件的方法: ArrayList<String> fidiidList = new ArrayList<String>(); String sampleLine; String fileStem = "/tmp/x.txt"; File sampleFile = new File(fileStem); BufferedReader sampleBuffer = new BufferedReader(new FileReader(sampleF

例如,这里有一种逐行读取文本文件的方法:

ArrayList<String> fidiidList = new ArrayList<String>();
String sampleLine;

String fileStem = "/tmp/x.txt";
File sampleFile = new File(fileStem);
BufferedReader sampleBuffer = new BufferedReader(new FileReader(sampleFile));
while ((sampleLine = sampleBuffer.readLine()) != null) {
    fidiidList.add(sampleLine);
}
sampleBuffer.close();
根据我的教科书,它承诺自动关闭物体


顺便说一句,当我在IDE中输入这个时,它提醒我将语言级别从1.8提高到1.7,这是否意味着Java 8不再支持这个功能?

您正在使用Java 7。使用Java 7的文件API:

final List<String> allLines 
    = Files.readAllLines(pathToYourFile, StandardCharsets.UTF_8);
最终列出所有行
=Files.readAllLines(路径到您的文件,StandardCharsets.UTF_8);
由于Java 8,您甚至可以使用获取文件中所有行的


至于IDE告诉您将语言级别提高到1.7,可能是因为您没有使用Java8特性



另一方面注意:我非常怀疑您是否能够从PDF中读取文本行,因为您的代码似乎试图这样做…

不,Java 8还支持try-with-resource。您能否在回答中详细说明一下?哦,这不是我的意图,只是一个粗心的示例。感谢s指出,现在已经更正了。使用Stream是否消除了关闭文件的必要性?根据javadoc,您可以不使用它,是的;但是,由于
Stream
实现了
AutoCloseable
,您可以使用资源尝试创建它,以实现更好的控制。
final List<String> allLines 
    = Files.readAllLines(pathToYourFile, StandardCharsets.UTF_8);