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 回答