0

私は次のテキストファイルを持っています(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

1 に答える 1

4

そのループ内で何度も呼び出しin.nextLine() ています。whileそれは私には本当に悪い考えのように聞こえます。各反復で何回実行されるかは、どのビットに入ったかによって異なります...厄介です。

使用することをお勧めします

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

そうすれば、チェック目的のためだけに読んで、誤って行をスキップすることはありません。

于 2012-09-04T16:32:41.093 に答える