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

问题描述 投票:0回答:1

我需要计算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)来测试它是否有效),-count并将其保存到numberOfWords变量

输出看起来像这样:

Lines: 71
Words: 0

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

java file io java-stream
1个回答
0
投票

[为了计算单词数,您应该使用空格" "flatMap将每个单词作为String分成Stream<String>

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

如果您进一步想过滤任何特定类型的单词,可以在.filter之后和flatMap操作之前附加一个count

© www.soinside.com 2019 - 2024. All rights reserved.