Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按行号检索字符串?JAVA_Java_Search_Jlist - Fatal编程技术网

按行号检索字符串?JAVA

按行号检索字符串?JAVA,java,search,jlist,Java,Search,Jlist,我有3个文本文件,都包含来自对象的字符串 我有一个GUI,其中有一个列表,其中填充了一个文本文件的内容。我目前正在寻找实现的东西,将采取行号从第一个文件和提取字符串从相同的行号在其他文件。有人能推荐什么吗?您可以使用: String[] lines = secondFileText.split("\n"); 注意-如果不起作用,请尝试用替换\r\n。您可以将字符串拆分为行: String[] lines = s.split("\r?\n"); 然后您可以在任何索引处访问该行: System

我有3个文本文件,都包含来自对象的字符串


我有一个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中的所有内容,但如果长,您必须对“磁盘”文件使用某种“随机访问”方案。