关闭流而不将其分配给变量 [Java]
Close a stream without assigning it to a variable [Java]
我正在使用 nio Files.lines
方法读取一个大文件,然后将其写入另一个文件。
BufferedWriter writer = Files.newBufferedWriter(Path.of(outFile);
Files.lines(Path.of(inputFile))
.forEach(line -> {
try {
writer.write(line);
writer.newLine();
} catch (IOException e) {
throw new UncheckedIOException(e);
}
});
writer.flush();
writer.close();
我想在 finally 块中关闭编写器和流 (Files.lines
)。
我知道我必须将此片段包围在 try-catch-finally
块中,但如何在不将其分配给变量的情况下关闭流?
无需进行大量手动工作,只需使用以下代码片段(正如您在评论中已被告知的那样):
Files.copy(Path.of(inputFile), Path.of(outFile)));
如果您出于某种原因仍想手动执行此操作,请使用 try-with-resources
。您仍会将 BufferedWriter
分配给一个变量,但无需显式关闭它。 Java 会自己做:
try(BufferedWriter writer = Files.newBufferedWriter(Path.of(outFile));
Stream<String> lines = Files.lines(Path.of(inputFile))) {
// ... do something with your lines & writer here
}
我正在使用 nio Files.lines
方法读取一个大文件,然后将其写入另一个文件。
BufferedWriter writer = Files.newBufferedWriter(Path.of(outFile);
Files.lines(Path.of(inputFile))
.forEach(line -> {
try {
writer.write(line);
writer.newLine();
} catch (IOException e) {
throw new UncheckedIOException(e);
}
});
writer.flush();
writer.close();
我想在 finally 块中关闭编写器和流 (Files.lines
)。
我知道我必须将此片段包围在 try-catch-finally
块中,但如何在不将其分配给变量的情况下关闭流?
无需进行大量手动工作,只需使用以下代码片段(正如您在评论中已被告知的那样):
Files.copy(Path.of(inputFile), Path.of(outFile)));
如果您出于某种原因仍想手动执行此操作,请使用 try-with-resources
。您仍会将 BufferedWriter
分配给一个变量,但无需显式关闭它。 Java 会自己做:
try(BufferedWriter writer = Files.newBufferedWriter(Path.of(outFile));
Stream<String> lines = Files.lines(Path.of(inputFile))) {
// ... do something with your lines & writer here
}