2013-05-20 2 views
0

Файл начинается с 200 строк справочной информации, которые мне не нужны. Я пытаюсь пропустить/игнорировать эти 200 строк до тех пор, пока строка не будет найдена. Как только эта строка будет найдена, я хочу продолжить обработку оставшейся части текстового файла.Как отбросить строки в текстовом файле до тех пор, пока не будет найдена определенная строка

Пример текстового файла: (примерно до линии 240 все линии мне нужно пропустить/игнорировать) http://pastebin.com/5Ay4ad6y

public static void main(String args[]) { 
    String endOfSyllabus = "~ End of Syllabus"; 
    Path objPath = Paths.get("2014HamTechnician.txt"); 

    if (Files.exists(objPath)) { 
     File objFile = objPath.toFile(); 
     try (BufferedReader in = new BufferedReader(new FileReader(objFile))) { 
      String line = in.readLine(); 

      while (line != null) { 
       line = in.readLine(); 
      } 

      if(endOfSyllabus.equals(line)){ 

      restOfTextFile = line.split(endOfSyllabus); 
     } 

     } 

     System.out.println(restOfTextFile[0]); 




     } 
    catch(IOException e){ 
      System.out.println(e); 
    } 

    } 
    else{ 

     System.out.println(
       objPath.toAbsolutePath() + " doesn't exist"); 
    } 



    /* Create and display the form */ 
    java.awt.EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      new A19015_Form().setVisible(true); 
     } 
    }); 
} 
+1

И в чем проблема с вашим текущим кодом? – vptheron

+0

С линией 'if (line == endOfSyllabus) {': Не использовать '==' в Java для сравнения значений String; вместо этого используйте 'String # equals'. – rgettman

+0

Этот цикл 'while' не будет работать, когда вы достигнете конца файла. – Keppil

ответ

0

Вы можете попробовать это, если вы знаете точную строку, которую вы хотите найти

if (lineString.startsWith("insert exact string")) { 
    // ... 
} 
0

насчет:

boolean found = false; 
for (String line; (line = in.readLine()) != null;) { 
    found = found || line.equals(endOfSyllabus); 
    if (found) { 
     // process line 
    } 
} 
0
import java.io.File; 
import java.io.IOException; 
import java.util.ArrayList; 
import java.util.List; 

import org.apache.commons.io.FileUtils; 

public class Test { 

    /** 
    * @param args 
    * @throws IOException 
    */ 
    public static void main(String[] args) throws IOException { 
     List<String> lines = FileUtils.readLines(new File("test.txt")); 
     List<String> avLines = new ArrayList<>(); 
     boolean valid = false; 
     for (String line : lines) { 

      if (line.trim().equals("~ End of Syllabus")) { 
       valid = true; 
       continue; 
      } 
      if (valid) { 
       avLines.add("\n"+line); 
      } 
     } 
     System.out.println(avLines.size()); 

    } 

} 
+0

хорошо я пробовал это: http://pastebin.com/4rDpLfrM. Теперь я получаю за борт, и он не отображает остальную часть текстового файла. – oxxi

+0

любая помощь пожалуйста? – oxxi

+0

Вы пробовали код, который я отобразил? Не могли бы вы сказать мне, что именно вы пытаетесь сделать? – Makky