2010-11-30 117 views
3

我會盡量清楚,但如果我的問題並不完美,請原諒我。 我有一個包含多行數據的txt文件。例如:在txt文件中讀取行[java]

123拉爾夫百色20000 200 1 2

256編肖恩30000 100 2 4

...

我需要讀取每一行順序,並將它傳遞迴的方法中的一個單獨的課程進行處理。我知道如何使用StringTokenizer將每行分解爲元素。

但是,我不知道如何一次讀取一行,將這些元素傳遞迴另一個類,然後在處理完成後讀取下一行。我的課程之間的方法合作正常(測試),但我怎麼一次讀一行?

我正在考慮創建一個數組,其中每行將是一個數組元素,但由於行數將是未知的,我不能創建一個數組,因爲我不知道它的最終長度。

由於

巴巴

EDIT

粗糙設置:

A類

end_of_file = f1.readRecord(emp); 

     if(!end_of_file) 
     { 
      slip.printPay(slipWrite); 
     } 

B類

public boolean readRecord(Employee pers) throws IOException { 

     boolean eof = false ; 

     String line = in.readLine() ; 

       ??? 

       } 

名不捨

傳遞,因此,直到在這裏,我可以讀第一線,但我想我需要一個方法是通過線環接一個回讀他們一個和類之間。

棘手......

回答

4

有很多方法可以一次讀取整行; Scanner是可能比較容易:

final Scanner s = new Scanner(yourFile); 
while(s.hasNextLine()) { 
    final String line = s.nextLine(); 
    YourClass.processLine(line); 
} 
+0

喜邁克爾,我加了一些代碼,試圖說明合作粗略。我不能在我的設置中使用文件名我想? – raoulbia 2010-11-30 15:29:09

+1

@Baba`yourFile`實際上是一個[`File`](http://download.oracle.com/javase/6/docs/api/java/io/File.html)實例,不是文件名,但它並不重要。我完全不明白你發佈的代碼。該代碼將讀取文件中的每一行,並將整行傳遞給`YourClass.processLine`;你在找什麼?除此之外,還需要做些什麼? – 2010-11-30 15:33:30

3
void readLine(String fileName) 
{ 
    java.io.BufferedReader br = null; 
    try 
    { 
     br = new java.io.BufferedReader(new java.io.FileReader(fileName)); 
     String line = null; 
     while(true) 
     { 
      line = br.readLine(); 
      if(line == null) 
      break; 
      // process your line here 
     } 
    }catch(Exception e){ 
    }finally{ 
    if(br != null) 
     { 
     try{br.close();}catch(Exception e){} 
     } 
    } 
} 

此外,如果要分割字符串...使用

串類split方法。對於依賴於空間拆分...你可以做... line.split("\\s*")

希望工程