2013-03-20 2 views
1

У меня есть файл, который содержит распечатку журнала, и я хочу прочитать определенные строки и от определенной точки от середины до конца строки и перейти к следующей строке, которая соответствует критерии. Я хочу начать чтение с RULE EXECUTING до конца строки, а затем проверить, что следующая строка имеет ПРАВИЛЬНОЕ ИСПОЛНЕНИЕ, если не пропустить ее до следующей строки, если у этого есть ПРАВИЛЬНОЕ ИСПОЛЬЗОВАНИЕ, затем скопируйте с этой точки в конец линия.хотите начать чтение файла с определенной точки

FILE SAMPLE 

2013-02-14 09:26:20:078 [main] DEBUG sne.ABC.hdhdh.jfjjfj.jkfjfjd.jdsd - RULE EXECUTING --> CMNETSL.hdjjjdlskdnlskd.jgfkdflkdfl_Translation 
2013-02-14 09:28:00:312 [main] DEBUG moc.uty.lweifoisd.sfsd.kjfdnkjs.RulesetInvoker - Rudejgfjkgjf: After invoking: CMNETSLO 
2013-02-14 09:26:20:421 [main] DEBUG sne.ABC.hdhdh.jfjjfj.jkfjfjd.jdsd - RULE EXECUTING --> sne.ABC.hdhdh.jfjjfj.jkfjfjd.jdsd 


what I want to get from the line would look like this 

RULE EXECUTING --> CMNETSL.hdjjjdlskdnlskd.jgfkdflkdfl_Translation 
RULE EXECUTING --> sne.ABC.hdhdh.jfjjfj.jkfjfjd.jdsd 

ответ

0

Так, что-то вроде:

BufferedReader br = new BufferedReader(new FileReader("mylog.log")); 

String line; 
int idx; 
while((line = br.getLine()) != null) 
    if((idx = line.indexOf("RULE EXECUTING --> ")) != -1) 
    System.out.println(line.substring(idx)); 

Я не пробовал, что в язя или компилируется, но я думаю, что вы, вероятно, получите идею.

0
Scanner s = new Scanner(new File("log.txt")); // read file using scanner line by line 

while(s.hasNextLine()) 
{ 

    String nextLine = s.nextLine(); 

    if(nextLine.startsWith("RULE EXECUTING")) //check if line starts with the key word 
    { 
       // do whatever you want to do 
    } 
} 
0

Вы должны прочитать весь файл для этого используйте FileReader и прочитать файл линию для линии, поиск подстроки «RULE Исполнительной» в каждом. Если он найден, используйте метод подстроки для вывода или иным образом обрабатывать подстроку. Повторяйте до тех пор, пока файл не будет выполнен, и, что наиболее важно, закройте файл.

Вот полный codesample:

BufferedReader reader = null; 
    try { 
     //open file 
     reader = new BufferedReader(new FileReader("example.log")); 

     int index; 

     //read first line 
     String line = reader.readLine(); 

     //go through the entire file line for line 
     while (line != null) { 

      //look for substring in line 
      index = line.indexOf("RULE EXECUTING"); 
      if(index >= 0) { 
       //substring found, write result to stdout 
       System.out.println(line.substring(index)); 
      } 

      //read next line 
      line = reader.readLine(); 
     } 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally { 
     try { 
      //always close file readers! 
      reader.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
+0

спасибо большое за ваше понимание и примеры кода, но у меня есть еще один вопрос: если я хочу, чтобы получить первый «ПРАВИЛО ИСПОЛНИТЕЛЬ» или сколько «ПРАВИЛО ИСПОЛНЕНИЯ «перед строкой без него, а затем соберите следующий набор после этой строки, а затем сравните ее. Некоторые вещи, как этот первый набор «RULE EXECUTING», сравниваются со вторым набором, 3-й сет, 4-й сет, а затем переходят на 2-й набор и сравниваются с 3-м и 4-м, а затем сравниваются 3-й и 4-й .... – user2119847

+0

хм я не понимаю ваш вопрос, как вы думаете, вы могли бы объяснить более подробно? Возможно, отредактируйте или выполните оригинальный вопрос или опубликуйте новый. Прошу прощения за поздний ответ. – gordonk

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