2011-02-17 72 views
16

什麼是最快的方式,我可以逐行閱讀每行包含兩個字符串。 一個例子輸入文件將是:最快的方法是在每行上用2組字符串逐行讀取文件?

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){ 

那是足夠有效的或者是有使用標準的Java API(沒有外界庫請)任何幫助表示讚賞感謝一個更有效的方法!

+1

任何類型的緩衝讀數將probab明顯要比你正在讀取文件的驅動器的查找時間快得多。 – biziclop 2011-02-17 23:27:34

回答

38

這取決於您說「高效」時的含義。從表現的角度來看,這是可以的。如果你問的是代碼樣式和大小,我pesonally做幾乎你一個小的修正做:

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

對於從標準輸入Java 6的閱讀,爲您提供另一種方式。使用類控制檯及其方法

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

1

如果你想分開兩組字符串的你可以這樣做:

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(); 
2
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> 
相關問題