在java中读取开始索引和结束索引之间的行

在java中读取开始索引和结束索引之间的行,java,java-io,Java,Java Io,假设我在一个文件中有10行。我有两个参数指定索引的开始和结束 StartIndex=2//指定前两行 EndIndex=3//指定最后3行 我需要读一下中间的台词。我知道维护索引和跳过是其中一种方法……但是还有其他有效的方法吗(即使使用外部库) 谢谢我想你是在问是否有必要直接跳到文件的第三行而不阅读前两行。一般来说(除非你有一个索引,就像你提到的那样),答案是否定的。你必须阅读前两行,才能知道它们有多长,因此,一行一行地阅读文件,忽略前几行的简单解决方案是你能得到的最好的解决方案 关于结束,如果

假设我在一个文件中有10行。我有两个参数指定索引的开始和结束

StartIndex=2//指定前两行

EndIndex=3//指定最后3行

我需要读一下中间的台词。我知道维护索引和跳过是其中一种方法……但是还有其他有效的方法吗(即使使用外部库)


谢谢

我想你是在问是否有必要直接跳到文件的第三行而不阅读前两行。一般来说(除非你有一个索引,就像你提到的那样),答案是否定的。你必须阅读前两行,才能知道它们有多长,因此,一行一行地阅读文件,忽略前几行的简单解决方案是你能得到的最好的解决方案

关于结束,如果结束索引是文件开头的索引,那么可以提前停止。但你是说文件末尾的第三行吗?在这种情况下,您还必须一直读取到文件末尾,才能知道何时停止


一种特殊情况是,如果您知道所有线的长度都相同。然后,您可以直接查找文件中的正确位置并从那里开始读取。

使用commons IO,您可以轻松地执行此操作,但效率不高,因为它会将整个文件加载到内存中

File file = new File("myfile.txt");
List lines = FileUtils.readLines(file).subList(2,3);

正如其他人所指出的,除非你知道关于文件内容的更多信息,否则就不知道了,而且你真的必须按顺序阅读才能找到行的开始位置。您可以使用缓冲字符输入流来跟踪行号。

如果每行的长度完全相同,则可以直接查找起始索引。