我有以下文本文件(不是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*/
。但是当它读取线条时,它忽略了一些线条和其他部分。有谁知道怎么做?
答案 0 :(得分:4)
您在in.nextLine()
循环中调用while
批次次。这听起来对我来说真是个糟糕的主意。它将在每次迭代中执行多少次将取决于它进入哪些位...讨厌。
我建议你使用
while(in.hasNextLine()) {
String line = in.nextLine();
// Now use line for the whole of the loop body
}
这样你就不会因为检查而不小心跳过行。