我有一个GMF文件。它的最后9行被视为页脚。快速的页脚开始于"页脚"和最后一行结束"文件结束"。
到目前为止,我已经写了这个
while ((sCurrentLine = br.readLine()) != null ) {
if(headcount<11)
{
HeaderArray.add(sCurrentLine);
headcount++;
System.out.println("Header["+headcount+"]");
System.out.println("sCurrentLine"+sCurrentLine);
}
else if( headcount>10 &&(sCurrentLine.startsWith("Rerate"))) {
RecordsArray.add(sCurrentLine);
headcount++;
System.out.println("Records");
System.out.println("Record"+sCurrentLine);
}
else if(sCurrentLine.startsWith("Footer"))
{
while(footerFlag!="End_of_file:")
{
FooterArray.add(sCurrentLine);
footerFlag=br.readLine();
sCurrentLine=footerFlag;
System.out.println("Footer");
System.out.println("Footer"+sCurrentLine);
}
}
}
但是这段代码只会进入无限循环。我需要FooterArray中的所有9行页脚。请帮忙。
答案 0 :(得分:0)
是否可以将while(footerFlag!="End_of_file:")
更改为while(!footerFlag.equals("End_of_file:"))
,看看会发生什么?
答案 1 :(得分:0)
如果第三方库是您的选项,Apache Commons IO项目有一个名为ReversedLinesFileReader的类,它允许您以最小的麻烦检索文件的页脚。
我同意@Anton的意见,如果你试图找到EOF令牌,那么.equals()
方法就是这样。编写条件语句的方法是查看变量footerFlag
是否具有字符串文字"End_of_file:"
的确切内存位置,它永远不会计算为true
。