2014-02-11 21 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 

    } 

}