循环遍历文件,逐行排列

时间:2013-03-10 17:44:57

标签: java file loops netbeans

我在阅读.dat文件时遇到问题。 目前,我知道如何读取.dat / .txt文件,但这对我来说有点棘手。

所以我有一组这样的数据:

TEST.DAT

Sunday
Scuba Diving Classes
Mr.Jones
N/A
Yes

Sunday
Sailing
Mr. Jackson
N/A
Yes

Sunday
Generation Next
Ms.Steele
N/A
Yes

Monday
Helping Hands
Ms.Wafa
ANX0
No

我需要对此文件执行的操作是逐个记录文件记录,如果字符串 activityname .equals到活动名称(例如Scuba Diving Classes),则变量以 C 开头设置供查看。这是编码:

try{
            BufferedReader reader = new BufferedReader(new FileReader("test.dat"));

                int numberOfLines = readLines();
                numberOfLines = numberOfLines / 6;

                for(int i=0;i < numberOfLines; i++)
                {
                    String CDay = reader.readLine();
                    String CActivityName = reader.readLine();
                    String CSupervisor = reader.readLine();
                    String CLocation = reader.readLine();
                    String CPaid = reader.readLine();
                    String nothing = reader.readLine();

                    if(CActivityName.equals(activityName))
                    {
                        txtDay.setText(CDay);
                        txtSupervisor.setText(CSupervisor);
                        txtLocation.setText(CLocation);

                        //If it Activity is paid, then it is shown as paid via radiobutton
                        if(CPaid.equals("Yes"))
                                {
                                    radioYes.setSelected(rootPaneCheckingEnabled);
                                }
                        if(CPaid.equals("No"))
                                {
                                    radioNo.setSelected(rootPaneCheckingEnabled);
                                }
                    }
                    else
                    {
                        reader.close();
                    }
                }
        }
        catch(IOException e)
        {
                Logger.getLogger(AddActivity.class.getName()).log(Level.SEVERE, null, e);
        }
    }

我使用了numberoflines变量来浏览文件,但我的逻辑存在缺陷,我不知道如何通过这个

方法的当前状态和错误

目前,此方法仅读取第一个记录 Scuba Diving Classes ,并且当if条件为false时不会遍历整个文件。

帮助!

2 个答案:

答案 0 :(得分:2)

  

目前,当if条件为false时,此方法...不会遍历整个文件。

要找出原因,请查看else块:

else
{
    reader.close();
}

这意味着您在阅读完文件之前关闭了BufferedReader。您无需在else块中放置任何内容。

答案 1 :(得分:1)

我看到JB Net评论帮助了你。通常,您应该关闭finally块中的IO变量(文件,数据或其他),如下所示:

InputStream is = null;
try{
    //open streams, do work
}catch(...){

}finally{
//seperate try catch here to make sure it does not affect anything else, just close one resource per try catch
try{
    if(is != null){
        is.close()
    }catch(Exception ...){
        //one line log
    }
}

在java 7中,您尝试使用资源但未尝试过:)