2012-09-04 161 views
0

我有以下的文本文件(而不是Java文件)的Java:掃描儀無法掃描完整的生產線

/*START OF CHANGES TO CODE*/ 
public class method1 { 

    public static int addTwoNumbers(int one, int two){ 
     return one+two; 
    } 

    public static void main (String[] args){ 
     int total = addTwoNumbers(1, 3); 
     System.out.println(total); 
    } 
} 
/*END OF CHANGES TO CODE*/ 

我嘗試使用下面的代碼讀取該文件

String editedSection = null; 
boolean containSection = false; 
Scanner in = new Scanner(new FileReader(directoryToAddFile)); 
while(in.hasNextLine()) { 
    if(in.nextLine().contains("/*START OF CHANGES TO CODE*/")) { 
     containSection = true; 
     editedSection = in.nextLine().toString(); 
    } else if (containSection == true) { 
     editedSection = editedSection+in.nextLine().toString(); 
    } else if (in.nextLine().contains("/*END OF CHANGES TO CODE*/")) { 
     containSection = false; 
     editedSection = in.nextLine().toString(); 
    } 
    in.nextLine(); 
} 

所以基本上我想要它做的是讀取一個文件,直到它看到的/*START OF CHANGES TO CODE*/,然後開始在此之後的每一行添加到一個字符串,直到它達到/*END OD CHANGES TO CODE*/。但是當閱讀線條時,它會忽略其他線條和其他部分。有誰知道如何做到這一點?

回答

4

你打電話in.nextLine()地段的時間在while循環內。這聽起來對我來說是一個非常糟糕的主意。每次迭代執行多少次將取決於進入哪些位......令人討厭。

我建議你使用

while(in.hasNextLine()) { 
    String line = in.nextLine(); 
    // Now use line for the whole of the loop body 
} 

這樣,通過閱讀他們只是爲了檢查的目的,你會不小心跳過線。

+0

這就是問題所在,甚至沒有進入我的腦袋,它會移動到下一行,我曾經稱它爲......乾杯:) –