LinkedList i RegExp

0

Witajcie, po raz kolejny po proszę was o pomoc:

Poniżej przedstawiona klasa w założeniu ma się zając wczytanie i obróbką pliku.

1.Metoda "Parser" powinna wczytywać zawartość pliku **.log * i przekazywać jego zawartość do LinkedList "wDane". No i w sumie tak się dzieje, jednak problem się pojawia gdy chcę użyć tej listy tudzież iteratora w metodzie "Dzialaj". Otóż gdy próbuję przejść do następnego elementu poprzez "wIter.Next();" nic się nie dzieje i dostaję listę błędów.

  1. RegExp - otóż chciałem skorzystać z wyrażeń regularnych żeby za ich pomocą wyciągnąć z listy "wDane" takie, które w wierszy będą miały "DEC" jednak kompletnie mi to nie wychodziło, użyłem metody "lookingAt" tak jak jest przedstawione w tutorialu oracle ale nie działa mi to. To znaczy w wierszy jest to słowo ale dostaje komunikat "false".

Jeśli coś jest niejasne proszę pytać. Jeśli macie jakieś pomysły jak to uprościć albo inaczej wykonać też będę wdzięczny, w ogóle będę wdzięczny za każdą pomoc.

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.*;


/**
 *
 * @author Kamui
 */
public class Parser {

    final static List<String> wDane = new LinkedList<String>();
    final static List<String> cDane = new LinkedList<String>();
    static ListIterator<String> wIter = wDane.listIterator();        
    static Iterator<String> cIter = cDane.listIterator();     
    
    
    
    
    public static void Parser(String path) {
        StringBuilder sb = new StringBuilder();
        String eachLine = null;
        
        
        if (path != null) {
            FileReader fr = null;
            
            
            try {
                File file1 = new File(path);
                fr = new FileReader(file1);
                BufferedReader br = new BufferedReader(fr);                           
          
                do {

                    eachLine = br.readLine();
                    
            
                    if (eachLine != null) {
                        sb.append(eachLine);
                        sb.append("\n");
                        wDane.add(eachLine);
                    }
                } 
                while (eachLine != null);
                System.out.println(sb.toString());
                
                
                fr.close();
                
            } 
            
            catch (IOException ex) {
                Logger.getLogger(Parser.class.getName()).log(Level.SEVERE, null, ex);
            } 
            
            finally {
             }
            Dzialaj(wDane);
            System.out.print(wDane);
            
            
        }

    }

   public static void Dzialaj(List L) {
        boolean dziala=false;
        
        
        wIter.next();  
        String k= wDane.get(1);
       boolean t=wIter.hasNext();

        String REGEX = "DEC";
        String INPUT=wIter.toString();
        pattern = Pattern.compile(REGEX);
        matcher = pattern.matcher(INPUT);
        dziala=matcher.lookingAt();
        
        String s=new Boolean(dziala).toString();
        System.out.println(s);
        System.out.println(t);
        System.out.println(k);
   }
   private static Pattern pattern;
    private static Matcher matcher;
}
0

Po pierwsze uchwyty do plików zamyka się w bloku finally:

finally {
    fr.close();
}

Po drugie w działaj powinieneś w pętli przeglądać po iteratorze:

while(wIter.hasNext()){
    String dane=wIter.next();
}

Bo nie wiesz czy są jakieś elementy w liście, pewnie program zwraca ci wyjątek IndexOutOfBoundException...

0

kaziuuu Dzięki za podpowiedź niestety nic to nie zmienia. Dostaje teraz taką listę błędów:

Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException
at java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:761)
	at java.util.LinkedList$ListItr.next(LinkedList.java:696)
	at DialogTest.Parser.Dzialaj(Parser.java:83)
        at DialogTest.Parser.Parser(Parser.java:71)
at DialogTest.Glowna$FileListener.actionPerformed(GlownaTest.java:211)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
	at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:809)
	at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:850)
	at java.awt.Component.processMouseEvent(Component.java:6288)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at java.awt.Component.processEvent(Component.java:6053)
	at java.awt.Container.processEvent(Container.java:2041)
	at java.awt.Component.dispatchEventImpl(Component.java:4651)
	at java.awt.Container.dispatchEventImpl(Container.java:2099)
	at java.awt.Component.dispatchEvent(Component.java:4481)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
	at java.awt.Container.dispatchEventImpl(Container.java:2085)
	at java.awt.Window.dispatchEventImpl(Window.java:2478)
	at java.awt.Component.dispatchEvent(Component.java:4481)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643)
	at java.awt.EventQueue.access$000(EventQueue.java:84)
	at java.awt.EventQueue$1.run(EventQueue.java:602)
	at java.awt.EventQueue$1.run(EventQueue.java:600)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
	at java.awt.EventQueue$2.run(EventQueue.java:616)
	at java.awt.EventQueue$2.run(EventQueue.java:614)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:613)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

1 użytkowników online, w tym zalogowanych: 0, gości: 1