如何使用lambda格式的Java 8对一组目录中的文件进行字数统计

时间:2017-12-01 00:56:17

标签: java lambda java-8

我正在进行一项任务,其中程序读取目录并获取目录中的文件数。但是,程序还必须在每个文件中执行字数统计。此外,该程序必须使用Java 8 Streams并使用Lambda语法。

问题:

如何计算目录中一组未确定文件中的单词?我不能只键入特定的文件名,尽管程序知道要查看的目录。

你会使用FileStream吗?一张地图? BOTH?

这是我到目前为止所做的。但是,它只计算目录中的文件并输出结果:

fileCatch8.java:

public class fileCatch8 {
     public static void main(String args[]) {
     List<String> fileNames = new ArrayList<>();
    try {
      DirectoryStream<Path> directoryStream = Files.newDirectoryStream
        (Paths.get("files"));
      for (Path path : directoryStream) {
        fileNames.add(path.toString());
      }
    } catch (IOException ex) {
    }
    System.out.println("Count: "+fileNames.size() + " files");
  }
}

wordCount8:

public class wordCount {
    public static Map<String, Integer> countJava8Style(String input) {
    return Pattern.compile("\\W+")
                  .splitAsStream(input)
                  .collect(Collectors.groupingBy(String::toLowerCase,
                                                 Collectors.summingInt(s -> 1)));
    }
}

0 个答案:

没有答案