Чтение файла: получение частичного вывода - PullRequest
1 голос
/ 11 февраля 2012

У меня есть следующий код для извлечения данных из моего файла.Когда я выполняю код, я узнаю, что он дает только 50% строк от общего количества строк.Почему это происходит?

    public static void main(String args[]) throws IOException
    {
        int count = 1;
    try {
            FileInputStream fileInput = new FileInputStream("C:/FaceProv.log");
            DataInputStream dataInput = new DataInputStream(fileInput);
            InputStreamReader inputStr = new InputStreamReader(dataInput);
            BufferedReader bufRead = new BufferedReader(inputStr);

                while(bufRead.readLine() != null)
                {
                    System.out.println("Count "+count+" : "+bufRead.readLine());
                    count++;

                }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }

Ответы [ 2 ]

6 голосов
/ 11 февраля 2012

Вы читаете строки дважды:

while(bufRead.readLine() != null) /// HERE
{
     System.out.println("Count "+count+" : "+bufRead.readLine()); // AND HERE
     count++;

}

но ты считаешь их только один раз. Итак, вы на самом деле читаете весь файл, но считаете только половину строк.

Измените его на:

String line;
while((line = bufRead.readLine()) != null) {
     System.out.println("Count "+count+" : " + line);
     count++;
}

и посмотри, что получится.

4 голосов
/ 11 февраля 2012

Поскольку

while(bufRead.readLine() != null)

отбрасывает только что прочитанную строку.

String myLine = null;
while ((myLine = bufRead.readLine()) != null) {
    System.out.println("Count "+count+" : " + myLine);
    ...
...