如何使用Java从文本文件中读取某些行?

时间:2011-03-04 18:39:13

标签: java bufferedreader

我有一个文本文件,最多可以存储3行(每行有时间##:##)。

  

如果整个文本文件为空:请执行   任务1

     

否则如果第一行有时间:do   任务2

     

否则,如果第一行和第二行是   充满时代:做任务3

     

否则如果所有三行都有时间:do   任务4

     

否则如果所有三行都有时间但是   第一行时间和第三行   时间有2个多小时的差距:做   任务5

我已经弄明白了前两个。

if ((inputFile.readLine()) == null) {Keypad5 task1 = new Keypad5(); }

else if ((inputFile.readLine()) !=null) {Keypad6 task2 = new Keypad6();}

我怎么读和第二和第三行?如果第二行有时间12:54,第三行有3:55,这是超过2小时的差距。我可以减去时间。

3 个答案:

答案 0 :(得分:3)

我建议你在决定做什么之前阅读所有三行。这将减少“复制和粘贴”第二和第三行的阅读。

这样的事情可能就是你所追求的:

List<String> lines = new ArrayList<String>();

Scanner s = new Scanner(new File("filename.txt"));
while (s.hasNextLine())
    lines.add(s.nextLine());

switch (lines.size()) {
case 0: doTask1(); break;
case 1: doTask2(); break;
case 2: doTask3(); break;
case 3:
    if (gapBetween(lines.get(0), lines.get(2)) < 2)
        doTask4();
    else
        doTask5();
}

答案 1 :(得分:0)

对BufferedReader的后续readLine()调用始终读取文件的下一行。如果你想比较不同的行,你必须将它们存储在变量中并在之后进行比较。

答案 2 :(得分:0)

我会先将所有文本行读入Collection中,如果您确定这只是3行,它不会导致内存问题而且您不需要这样做很多错误处理。

ArrayList<String> lines = new ArrayList<String>();
String line = null;
while ((line = inputFile.readLine()) != null){
lines.add(line);
}

然后你可以很容易地做一些if语句,而不会覆盖缓冲区中的前一行。 (我假设“inputFile”是一个BufferedReader)