提取 java 模式之间的文件行列表



我有一个像这样的文件 -

--------------
abc
efg
hig
---------------
xyz
pqr
---------------
fdg
gege
ger
ger
---------------

编写解析此文件并为破折号之间的每个文本块创建单独的列表的 java 代码的最佳方法是什么。例如-

List<String> List1 = {abc, efg, hig}
List<String> List2 = {xyz, pqr}
List<String> List3 = {fdg, gege, ger, ger}
您可以使用

java.nio.file.Files.lines(Path path)读取文件并使用Stream<String>读取每一行来表示输入文件的单行。下面是一些简短的示例:

public static void main(String[] args) throws IOException {
    final List<List<String>> lines = new CopyOnWriteArrayList<>();
    final String separator = "---------------";
    Files.lines(new File("/tmp/lines.txt").toPath())
            .forEach(line -> {
                if (separator.equals(line)) {
                    lines.add(new ArrayList<>());
                } else {
                    lines.get(lines.size() - 1).add(line);
                }
            });
    // Remove last empty list
    lines.remove(Collections.emptyList());
    lines.forEach(System.out::println);
}

输出

[abc, efg, hig]
[xyz, pqr]
[fdg, gege, ger, ger]

相关内容

  • 没有找到相关文章

最新更新