How to read all the lines of a file using java code?

file-io, java, java.util.scanner

Solution

From what I know, `Scanner` uses `\n` as delimiter by default. Maybe your file has `\r\n`. You could modify this by calling `scanner.useDelimiter` or (and this is much better) try using this as an alternative:

import java.io.*;

public class IOUtilities
{
    public static int getLineCount (String filename) throws FileNotFoundException, IOException
    {
        LineNumberReader lnr = new LineNumberReader (new FileReader (filename));
        while ((lnr.readLine ()) != null) {}

        return lnr.getLineNumber ();
    }
}

According to the documentation of LineNumberReader:

A line is considered to be terminated by any one of a line feed ('\n'), a carriage return ('\r'), or a carriage return followed immediately by a linefeed.

so it's very adaptable for files that have different line terminating characters.

Give it a try, see what it does.

Problem

I have a strange problem where I have a log file called transactionHandler.log.It is a very big file having 17102 lines.This i obtain when i do the following in the linux machine: ``` wc -l transactionHandler.log 17102 transactionHandler.log ``` But when i run the following java code and print the number of lines i get 2040 as the o/p. ``` import java.io.*; import java.util.Scanner; import java.util.Vector; public class Reader { public static void main(String[] args) throws IOException { int counter = 0; String line = null; // Location of file to read File file = new File("transactionHandler.log"); try { Scanner scanner = new Scanner(file); while (scanner.hasNextLine()) { line = scanner.nextLine(); System.out.println(line); counter++; } scanner.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } System.out.println(counter); } } ``` Can you please tell me the reason.

Original source

Related problems