按行号检索字符串?JAVA
我有3个文本文件,都包含来自对象的字符串按行号检索字符串?JAVA,java,search,jlist,Java,Search,Jlist,我有3个文本文件,都包含来自对象的字符串 我有一个GUI,其中有一个列表,其中填充了一个文本文件的内容。我目前正在寻找实现的东西,将采取行号从第一个文件和提取字符串从相同的行号在其他文件。有人能推荐什么吗?您可以使用: String[] lines = secondFileText.split("\n"); 注意-如果不起作用,请尝试用替换\r\n。您可以将字符串拆分为行: String[] lines = s.split("\r?\n"); 然后您可以在任何索引处访问该行: System
我有一个GUI,其中有一个列表,其中填充了一个文本文件的内容。我目前正在寻找实现的东西,将采取行号从第一个文件和提取字符串从相同的行号在其他文件。有人能推荐什么吗?您可以使用:
String[] lines = secondFileText.split("\n");
注意-如果不起作用,请尝试用替换\r\n。您可以将字符串拆分为行:
String[] lines = s.split("\r?\n");
然后您可以在任何索引处访问该行:
System.out.println(lines[0]); // The array starts at 0
注意:在Windows上,结束行的标准是使用回车符,后跟换行符(CRLF)。在Linux上,规范就是LF。正则表达式
“\r?\n”
满足这两种情况-它匹配零或一个(“?”
)回车(“\r”
)后跟换行符(“\n”
)。BufferedReader将很好地处理无法放入内存中的大型文件,它非常快速,可以同时处理\r\n和\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
}
}
从开始处读取并计算行数。或者使用某种摄影矢量方案。或者在文本中嵌入行号并使用二进制搜索。我建议BufferedReader“有人能推荐什么吗?”是的:尝试一下,然后回来问一些更具体的问题一个重要的问题是“文件”是100字节长还是1 GB长。如果短,您可以轻松处理RAM中的所有内容,但如果长,您必须对“磁盘”文件使用某种“随机访问”方案。