2015-08-24 4 views
1

Эй, ребята, я пытаюсь вырваться из цикла 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; 
    } 
    } 
} 

ответ

0

Оператор break не входит в цикл, поэтому вы не можете его использовать.

Оператор forEach принимает анонимную функцию, которая применяется ко всем элементам, найденным оператором Paths.get("D:/workspace/Project Program/Projects/")).

Вы можете остановить операцию, выбросив исключение, если оно вам подходит.

Источник: Java Docs

Edit: учитывая тот факт, что вы передаете является анонимной функцией можно обернуть все функциональный блок с, если заявление, которое зависит от булевой переменной, определенной вне функции: если вы находите элемент, который вы переключаете для переменной, поэтому для следующих элементов это будет просто no-op. Если вы хотите узнать больше о лямбда-выражениях Java, посмотрите here.

+0

Да, мой план состоял в том, чтобы он просто пропустил проверку, имея переменную bool, чтобы проверить, не нашел ли она ее, но тогда я нашел ее так, чтобы ее попробовать. Спасибо за информацию. – Ardel

Смежные вопросы