Java:从文件夹中读取并将每个文件添加到ArrayList

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

考虑这段代码:

private static ArrayList<Level> levels = new ArrayList<>();

static {
    try (Stream<Path> paths = Files.walk(Paths.get("levels"))) {
        paths
            .filter(Files::isRegularFile)
            .forEach(levels.add(new Level(file))); //CAN'T DO!!
    } catch (IOException e) {
        e.printStackTrace();
    } 
}

我认为代码几乎说明了我想做的事情。我在某处找到了这段代码,并尝试应用该代码,以使用诸如level1.txt,level2.txt等文件的文件夹创建Level对象。Level类将File作为参数。

forEach方法给出了SyntaxError。

  1. 过滤器方法中的“ ::”是什么?
  2. 为什么路径被新行和2种方法所取代?以前从未见过这样的事情。
  3. 我该如何使其正常工作?
java file stream
1个回答
0
投票
  1. following很好解释

  2. 代码可以在多行上运行,但这与以下内容相同。您先调用filter方法,然后在forEach

    返回的对象上调用filter
    paths.filter(Files::isRegularFile).forEach(levels.add(new Level(file)));   
    
  3. 开始工作,您需要定义file变量,这是通过lambda函数完成的]

    paths.filter(Files::isRegularFile).forEach(file -> levels.add(new Level(file)));   
    
© www.soinside.com 2019 - 2024. All rights reserved.