查找行并将它们复制到 Java 中的新文件中

Find lines and copy them into a new file in Java

我正在寻找一个小代码片段,它可以在文件中查找行并复制与搜索字符串匹配的行。但是,恐怕我找不到这样的片段。例如,如果我在文件中有以下行:

aaaa aaa xx 
bbbb bb 
cccc cx xx
bbbb ax aa
yyyy yd cd

最好有一个像 public void copyFoundLines(String searchStrings) 这样的函数。例如,如果我想搜索 aa 和 xx,我会得到一个这样的新文件:

aaaa aaa xx
cccc cx xx
bbbb ax aa

你的问题不清楚,但这里有一个方法:

public static void copyMatchingLines(final Path src, final Path dst,
    final String... searchStrings)
    throws IOException
{
    final Predicate<String> predicate
        = s -> Arrays.stream(searchStrings).anyMatch(s::contains);

    try (
        final Stream<String> lines = Files.lines(src, StandardCharsets.UTF_8);
        final BufferedWriter writer = Files.newBufferedWriter(dst, StandardCharsets.UTF_8,
            StandardOpenOption.CREATE_NEW);
    ) {
        lines.filter(predicate).forEach(line -> {
            writer.write(line);
            writer.newLine();
        });
        writer.flush();
    }
}