为什么我的 break 标签出错了?

Why is my break label erroring?

嘿,伙计们,我正在尝试跳出搜索所有文件并在找到文件后中断的 for 循环。我发现的最好的事情是标签中断,但它给出了一个错误,说它不存在你们可以看看我做错了什么吗?

    import java.nio.file.Files;
import java.nio.file.Paths;

import org.dom4j.Document;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
import org.jaxen.dom4j.*;


public class Load 
{
    static String info = "";
    public static String LoadSum(String projNum)
    {
        info = "";
        try
        {
            searching:
            Files.walk(Paths.get("D:/workspace/Project Program/Projects/")).forEach(filePath ->
            {
                if(Files.isRegularFile(filePath))
                {
                    try 
                    {
                        System.out.println("Checking");
                        SAXReader reader = new SAXReader();
                        Document document = reader.read(filePath.toFile());
                        Node node = document.selectSingleNode("//Project/Info/ProjectNumber");
                        String projectNumber = node.getStringValue();
                        if(projNum.equals(projectNumber))
                        {
                            System.out.println("Found it");
                            node = document.selectSingleNode("//Project/Info/Name");
                            info += node.getStringValue() + " : ";
                            //node = document.selectSingleNode("//Project/Info/Owner");
                            info += "Owner" + " : ";
                            node = document.selectSingleNode("//Project/Info/Status");
                            info += node.getStringValue() + " : ";
                            break searching; // error here searching doe not exist
                        }
                    } 
                    catch (Exception e) 
                    {
                        e.printStackTrace();
                    }
                }
            });
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        return info;
    }
    }
}

break语句没有进入循环,所以不能使用。

To forEach 语句接受一个匿名函数,该函数应用于 Paths.get("D:/workspace/Project Program/Projects/")) 语句找到的所有元素。

如果适合您,您可以通过抛出异常来停止操作。

来源:Java Docs

Edit:考虑到您传递的是匿名函数这一事实,您可以使用依赖于在函数外部定义的布尔变量的 if 语句包装所有函数块:如果找到元素,则切换变量,因此对于下一个元素,它将只是一个空操作。如果您想了解更多关于 Java lambda 表达式的信息,请查看 here.