我有以下方法:
private List<String> readFile() {
List<String> strings = new ArrayList<>();
try {
Resource resource = new ClassPathResource("resource.file");
passwords = new BufferedReader(new InputStreamReader(resource.getInputStream(), StandardCharsets.UTF_8)).lines().collect(
Collectors.toList());
}
catch (IOException e) {
logger.error("Error while reading file", e);
}
return strings;
}
我需要关闭流吗?如果是,怎么办?
答案 0 :(得分:3)
BufferedReader
是一种资源,程序完成后必须将其关闭。
尝试使用资源
try (BufferedReader br =
new BufferedReader(new InputStreamReader(resource.getInputStream(),
StandardCharsets.UTF_8))) {
passwords = br.lines().collect(Collectors.toList());
} catch (IOException e) { e.printStackTrace();}
try-with-resources语句是一个try语句,它声明一个 或更多资源。资源是必须在之后关闭的对象 程序完成。 try-with-resources语句 确保在语句末尾关闭每个资源。任何 实现java.lang.AutoCloseable的对象,其中包括所有 实现java.io.Closeable的对象可以用作资源。
强调我。
答案 1 :(得分:0)
在这种情况下,Java具有一种称为try-with-ressources的强大机制,它看起来像=
Try(InputStream是= new InputStream(System.In)),它将在try语句为^^
后为您关闭为了更好地理解英语,我只是用google(尝试使用ressources java)。