La manière la plus rapide de lire une ligne de fichier par ligne avec 2 jeux de chaînes sur chaque ligne?

Quelle est la façon la plus rapide de lire ligne par ligne avec chaque ligne contenant deux chaînes. Un exemple de fichier d'entrée serait:

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

il y a toujours deux ensembles de Cordes sur chaque ligne dont j'ai besoin même s'il y a des espaces entre les cordes par exemple "By Line"

actuellement j'utilise

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

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

est-ce assez efficace ou y a-t-il un moyen plus efficace d'utiliser L'API JAVA standard (Pas de bibliothèques externes s'il vous plaît) toute aide est appréciée merci!

16
demandé sur xiaolin 2011-02-18 02:12:58

3 réponses

cela dépend de ce que vous voulez dire par "efficace"."Du point de vue de la performance, C'est bien. Si vous posez des questions sur le style et la taille du code, j'ai l'impression que vous faites avec une petite correction:

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

pour la lecture de STDIN Java 6 vous offre encore une autre voie. Utiliser la Console de classe et ses méthodes

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

38
répondu AlexR 2012-04-28 01:45:45
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);
        }
    }
}

Le résultat:

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>
2
répondu corsiKa 2011-02-17 23:40:38

si vous voulez séparer deux ensembles de chaîne de caractères, vous pouvez le faire de cette façon:

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();
1
répondu smas 2011-02-17 23:28:08