温馨提示:本文翻译自stackoverflow.com,查看原文请点击:java - How to convert lines in txt file to stream of chars / Strings
file io java java-stream

java - 如何将txt文件中的行转换为字符/字符串流

发布于 2020-04-11 12:25:42

我需要计算txt文件中的行数和单词数,到目前为止,我尝试使用以下方法:

File file = new File("C:\\output_form.txt");

Path path = Paths.get(file.getAbsolutePath());
long lineCount = Files.lines(path).count();

Stream<String> stream = Files.lines(path);

long numberOFWords = stream
            .map(line -> line.codePoints())
            .filter(character -> character.findAny().equals("a"))
            .count();
System.out.println("Lines: "+lineCount + "\n" +
        "Words: "+ numberOFWords);

我想要:-
将文件行转换为字符流,-
过滤每个非空格字符(我输入.equals(“ a)来测试它是否还能工作),-
将其计数并将其保存到numberOfWords变量中

输出看起来像这样:

Lines: 71
Words: 0

关于我在做什么错的任何提示?

查看更多

提问者
santana011
被浏览
138
Naman 2020-02-01 23:09

要计算单词的数量,您应该使用空格分隔行," "并将flatMap每个单词都String分成一个Stream<String>

long lineCount = Files.lines(path).count();
long numberOFWords  = Files.lines(path)
            .flatMap(line -> Arrays.stream(line.split(" "))) // this section
            .count();

如果您还想过滤任何特定类型的单词,则可以操作.filterflatMapand之前附加a count

如果打算捕获所有字符,则可以将上述解决方案扩展flatMap到相应的字符流行。

long numberOfCharacters = Files.lines(path)
        .flatMap(line -> line.chars().mapToObj(c -> (char) c))
        .filter(c -> !c.equals(' '))
        .count();