我必须读取文件的页脚并将其存储在java

时间:2016-12-12 16:45:20

标签: java arraylist

我有一个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行页脚。请帮忙。

2 个答案:

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