Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Fastest way to read a file line by line with 2 sets of Strings on each line?

What is the fastest way I can read line by line with each line containing two Strings. An example input file would be:

Fastest, Way
To, Read
One, File
Line, By Line
.... can be a large file

There are always two sets of strings on each line that I need even if there are spaces between the String e.g. "By Line"

Currently I am using

FileReader a = new FileReader(file);
            BufferedReader br = new BufferedReader(a);
            String line;
            line = br.readLine();

            long b = System.currentTimeMillis();
            while(line != null){

Is that efficient enough or is there a more efficient way using standard JAVA API (no outside libraries please) Any help is appreciated Thanks!

like image 585
xiao Avatar asked Feb 17 '11 23:02

xiao


2 Answers

It depends what do you mean when you say "efficient." From the point of view of performance it is OK. If you are asking about the code style and size, I pesonally do almost you do with a small correction:

        BufferedReader br = new BufferedReader(new FileReader(file));
        String line;
        while((line = br.readLine()) != null) {
             // do something with line.
        }

For reading from STDIN Java 6 offers you yet another way. Use class Console and its methods

readLine() and readLine(fmt, Object... args)

like image 118
AlexR Avatar answered Oct 12 '22 16:10

AlexR


import java.util.*;
import java.io.*;
public class Netik {
    /* File text is
     * this, is
     * a, test,
     * of, the
     * scanner, I
     * wrote, for
     * Netik, on
     * Stack, Overflow
     */
    public static void main(String[] args) throws Exception {
        Scanner sc = new Scanner(new File("test.txt"));
        sc.useDelimiter("(\\s|,)"); // this means whitespace or comma
        while(sc.hasNext()) {
            String next = sc.next();
            if(next.length() > 0)
                System.out.println(next);
        }
    }
}

The result:

C:\Documents and Settings\glowcoder\My Documents>java Netik
this
is
a
test
of
the
scanner
I
wrote
for
Netik
on
Stack
Overflow

C:\Documents and Settings\glowcoder\My Documents>
like image 22
corsiKa Avatar answered Oct 12 '22 17:10

corsiKa