2014-02-11 56 views
0

我有3個文本文件,都包含來自對象的字符串。按行號檢索字符串? Java

我有一個用一個文本文件的內容填充的列表的GUI。我目前正在尋找實現的東西,將採取第一個文件的行號,並從其他文件中的相同行號拉出字符串。誰能推薦任何東西

+0

和計算行。或者使用某種塗料載體方案。或者在文本中嵌入行號並使用二進制搜索。 –

+0

我推薦BufferedReader – Leo

+0

「任何人都可以推薦任何東西嗎?」是的:嘗試一下,然後回來問一些更具體的問題 –

回答

0

您可以使用:

String[] lines = secondFileText.split("\n"); 

P.s.-如果不行嘗試\ r \ n替換\ n。

1

您可以將一個字符串分解成線:

System.out.println(lines[0]); // The array starts at 0 

注:在Windows上,截至線的標準是使用

String[] lines = s.split("\r?\n"); 

然後你就可以在任何索引來訪問行回車後跟一個換行符(CRLF)。在Linux上,規範只是LF。正則表達式"\r?\n"適用於這兩種情況 - 它匹配零個或一個("?")回車符("\r"),後跟換行符("\n")。

0

的BufferedReader將,將不適合於存儲大型文件處理好,這是相當快,處理從一開始就閱讀這兩個\ r和\ n

import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.IOException; 


public class ReadByLine { 

    /** 
    * @param args 
    * @throws FileNotFoundException 
    */ 
    public static void main(String[] args) throws FileNotFoundException { 
     File f = new File("xyz.txt"); 
     int lineNumber = 666; 

     BufferedReader br = new BufferedReader(new FileReader(f)); 
     String line = null; 
     int count = -1; 
     try { 
      while((line = br.readLine())!=null){ 
       count++; 
       if (count == lineNumber){ 
        //get the line, do what you want 
        break; 
       } 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally{ 
      try { 
       br.close(); 
      } catch (IOException e) { 
       br = null; 
      } 
     } 

     //do what you want with the line 

    } 

}