Самый быстрый способ прочитать файл построчно с 2 наборами строк в каждой строке? - PullRequest
16 голосов
/ 18 февраля 2011

Какой самый быстрый способ я могу читать построчно с каждой строкой, содержащей две строки.Пример входного файла:

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

В каждой строке всегда есть два набора строк, которые мне нужны, даже если между строками есть пробелы, например, «По строке»

В настоящее время яЯ использую

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

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

Это достаточно эффективно или есть более эффективный способ с использованием стандартного API JAVA (нет внешних библиотек, пожалуйста) Любая помощь приветствуется Спасибо!

Ответы [ 3 ]

39 голосов
/ 18 февраля 2011

Это зависит от того, что вы имеете в виду, когда говорите «эффективный».С точки зрения производительности это нормально.Если вы спрашиваете о стиле и размере кода, я, скорее всего, сделаю это с небольшой поправкой:

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

Для чтения из STDIN Java 6 предлагает вам еще один способ.Используйте класс Console и его методы

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

2 голосов
/ 18 февраля 2011
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);
        }
    }
}

Результат:

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>
1 голос
/ 18 февраля 2011

Если вы хотите разделить два набора строк, вы можете сделать это следующим образом:

BufferedReader in = new BufferedReader(new FileReader(file));
String str;
while ((str = in.readLine()) != null) {
    String[] strArr = str.split(",");
    System.out.println(strArr[0] + " " + strArr[1]);
}
in.close();
...