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

时间:2015-02-15 00:59:29

标签: java file rows editing

我正在寻找一个小代码片段,它会在文件中找到行并复制与搜索字符串匹配的行。但是,我担心我找不到这样的片段。例如,如果我在一个文件后面有行:

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

1 个答案:

答案 0 :(得分:0)

你的问题不清楚,但这是一种方法:

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();
    }
}