0

我有一个我制作的日志,我希望我的程序可以按月在日志中搜索。这是我的 file.txt 的格式:

[31 02/08/13 21:55:47] Name_Surname 0A49G 21

第一个数字是一年中的第几周(我设法得到了它,我可以按周搜索,虽然这个月是一样的,但似乎我错了),接下来的 3 个数字是天/月/年。问题是我无法拆分数组(因为 netBeans 说“线程中的异常”AWT-EventQueue-0“java.lang.ArrayIndexOutOfBoundsException:1”)。我标记了 netBeans 所说的问题所在。我想要的是获得月份的数字,以便我可以进行搜索。

这是代码:

    textoMostrado.setText("");
    FileReader fr = null;
    try {
        File file = new File("Registro.txt");
        fr = new FileReader(file);
        if (file.exists()) {
            String line;
            BufferedReader in = new BufferedReader(fr);
            try {
                int mes = Calendar.getInstance().get(Calendar.MONTH);
                mes++;
                int año = Calendar.getInstance().get(Calendar.YEAR);
                año %= 100;
                while ((line = in.readLine()) != null)   {
                    String[] lista = line.split(" ");
                    String [] aux = lista[1].split("/"); //the problem is here
                    int numMes = Integer.parseInt(aux[1]);
                    int numAño = Integer.parseInt(aux[2]);
                    if ((numMes==mes)&&(numAño==año)) {
                        textoMostrado.append(line+"\n"); 
                    }
                }
            } catch (IOException ex) {
                Logger.getLogger(MostrarRegistros.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    } catch (FileNotFoundException ex) {
        Logger.getLogger(MostrarRegistros.class.getName()).log(Level.SEVERE, null, ex);
    } finally {
        try {
            fr.close();
        } catch (IOException ex) {
            Logger.getLogger(MostrarRegistros.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

对不起我的英语,不是我的母语,我希望有人可以帮助我。

4

1 回答 1

5

这对线:

String[] lista = line.split(" ");
String [] aux = lista[1].split("/"); //the problem is here

... 任何时候该行不包含空格都会失败,因为在这种情况下lista将只有一个元素。你可以防范:

if (lista.length > 1) {
    String[] aux = lista[1].split("/");
    ...
} else {
    // Whatever you want to do with a line which doesn't include a space.
}

我的猜测是,您的日志中包含的行与您的示例中未显示 - 您只需在else上面的子句中添加一些日志即可轻松诊断。顺便说一句,您可能会发现它是一个空字符串...

于 2013-08-02T22:03:40.793 回答