我正在尝试读取一个文件,但它要求两个try-catch块,一个用于打开文件,另一个用于读取其内容。为什么需要这个?
String line = null;
try {
File file = new File("F:\\Mobile Extractor.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));
while((line=reader.readLine())!=null) {
System.out.println(line);
}
reader.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
答案 0 :(得分:0)
<div style="margin: 10% auto 0px; width: 80%; text-align:center;">
<span style="float: left;">Number of Todos:</span>
<input type="text" placeholder="input todo" style="text-align: left;">
<span style="float: right;">Number Checked</span>
</div>
需要try-catch
阻止。
它将检查文件中的可用内容。如果没有内容,则会抛出IOException
,否则将显示内容。
应该是这样的:
IOException
答案 1 :(得分:0)
如果您使用的是7之前的版本,请考虑使用finally
块来避免内存泄漏并关闭流。从Java 7开始,您可以使用try with resources是最佳实践
String line = null;
File file = new File("F:\\Mobile Extractor.txt");
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader(file));
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if(reader!=null){
reader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
尝试与 - 资源:
String line = null;
File file = new File("F:\\Mobile Extractor.txt");
try(BufferedReader reader = new BufferedReader(new FileReader(file));) {
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
声明语句出现在try关键字后面的括号内。 Java SE 7及更高版本中的类BufferedReader
实现了接口java.lang.AutoCloseable
。因为BufferedReader
实例是在try-with-resource
语句中声明的,所以无论try语句是正常完成还是突然完成(由于方法BufferedReader.readLine
抛出{{1},它都将被关闭}})。
答案 2 :(得分:0)
试试java8,你不需要任何东西。你可以这样做。
import java.nio.file.Files;
import java.nio.file.Paths;
Files.lines(Paths.get(path))
.filter(l -> l.contains(searchWord)).forEach(System.out::println);