从文件中读取前5行,然后读取其余行

时间:2013-04-26 16:59:27

标签: java io java-io

免责声明:这是作业,所以我在一些限制下工作。

我需要读取文件的前5行并使用这些字符串来更改标签和按钮,然后将文件的其余部分保存为arraylist。

该文件如下所示:

Name  
Label1  
Label2  
Button1  
Button2  
Button3  
word0,word0  
word1,word1  
etc  

我已经能够使用以下代码读取(word0,word0等)中的wordpairs(前5行是添加,因此它现在可能无效):

public static ArrayList loadFile(String filename) {
    ArrayList<Wordpair> temp = new ArrayList<>();
    try {
        FileInputStream fis;
        fis = new FileInputStream(filename);
        //Scanner to read individual lines from a file
        Scanner scan = new Scanner(fis);
        while (scan.hasNext()) {
            String line = scan.nextLine();
            //Scanner to read individual items from a string 
            Scanner lineScan = new Scanner(line);
            lineScan.useDelimiter(",");
            String question = lineScan.next();
            String answer = lineScan.next();
            //Create the new Wordpair
            Wordpair wp = new Wordpair(question, answer);
            //Add the new wordpair to the list
            temp.add(wp);
        }
        scan.close();
    } catch (FileNotFoundException ex) {
        Logger.getLogger(IO.class.getName()).log(Level.SEVERE, null, ex);
    }
    return temp;
}

我的想法是将文件的前5行保存为单独的对象,该对象仅包含文件中的信息,但我不知道如何操作。 我最初的想法是创建一个新方法,只读取前5行然后返回一个对象,就像上面的代码用wordpairs,但我还没有能够得到任何工作。然后我想我需要让现有代码跳过开头。

正如你所看到的,我在这里很困惑,所以如果有人能指出我正确的方向,我将非常感激!

2 个答案:

答案 0 :(得分:2)

我会在你的while循环中使用一个计数器。

int count = 0;
while (scan.hasNext()) {
        String line = scan.nextLine();
        //Scanner to read individual items from a string 
        Scanner lineScan = new Scanner(line);
        lineScan.useDelimiter(",");
        String question = lineScan.next();
        String answer = lineScan.next();

        if (count < 5)
          //lineScan contains one of the first 5 lines
          //call a method to do something with these lines here
        else {
          //Create the new Wordpair
          Wordpair wp = new Wordpair(question, answer);
          //Add the new wordpair to the list
          temp.add(wp);
        }

        count++;
    }

答案 1 :(得分:0)

您可以在循环中使用计数器:

int c = 0;
while (scan.hasNext()) {
    if (c < 5){
        //do something
        //first 5 lines
    }
    else{
        //otherwise
        //next lines
    }
}