Java:为什么我的BufferedReader没有读取代码的下一行?

时间:2016-02-19 22:08:11

标签: java bufferedreader readline

//这是我的代码。它应该做什么:逐行读取.txt文件。取每行(其信息用逗号分隔),拆分它,获取每个数据并创建一个ObjectName2对象实例。使用addData方法将ObjectName2添加到ObjectName1。问题:读取第一行正常,将其添加到ObjectName1。读同一行,遇到重复行,抛出异常。继续阅读第一行。它不会再进入第二线。从我看到的代码,它应该工作正常。任何帮助将不胜感激。这段代码全部在另一个类中,比如ObjectName3。

编辑:会发生什么,它会打印到控制台发现重复的行,比如lineName。然后它再次打印到控制台:找到重复的行,lineName。然后又一次又一次。它一直在继续。这是无限的。它永远不会超过第一行。只是一直说"重复行:lineName"。

public ObjectName1 load() {

    ObjectName1 list = new ObjectName1();
    BufferedReader fileIn;
    String inputLine;
    try {
        fileIn = new BufferedReader(new FileReader(inputFileName));
        inputLine = fileIn.readLine(); // read in first line
        while (inputLine != null) {
            String[] listOfData = inputLine.split(",");
            String data1= listOfData[0];
            String data2= listOfData[1];
            String data3= listOfData[2];
            int data4= Integer.parseInt(listOfData[3]);
            int data5= Integer.parseInt(listOfData[4]);
            ObjectName2 data= new ObjectName2(data1, data2, data3, data4, data5);
            list.addData(data); // throws exception if duplicate data encountered
            inputLine = fileIn.readLine(); // read in next line?
        }
    }
    catch (Exception e) { // happens if we try to add duplicate data
        System.out.println(e.getMessage());
    }
    finally {
        boolean lineAfterException = true;;
        while (inputLine != null) {
            if (lineAfterException) {
                inputLine = fileIn.readLine();
                lineAfterException = false;
            }
            String[] listOfData = inputLine.split(",");
            String data1 = listOfData [0];
            String data2 = listOfData [1];
            String data3 = listOfData [2];
            int data4 = Integer.parseInt(listOfData [3]);
            int data5 = Integer.parseInt(listOfData [4]);
            ObjectName2 data= new ObjectName2 (data1, data2, data3, data4, data5);
            list.addData(data)
            inputLine = fileIn.readLine();
        }
    }
    fileIn.close();
    return list;
}

1 个答案:

答案 0 :(得分:0)

我认为它实际上是在阅读它。

你可以通过以下方式验证这一点:

的System.out.println(inputLine);

在此之后

inputLine = fileIn.readLine();

inputLine = fileIn.readLine();

的System.out.println(inputLine);

我认为你的问题是当你比较线条时,我的意思是,这一行: list.addData(数据);如果遇到重复数据, //会抛出异常

我认为如果您发布比较线条的方式会有所帮助,我的意思是,如果您正确比较线条的内容而不是指向内存中对象的指针