1

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

StartIndex = 2 // 指定前 2 行

EndIndex = 3 // 指定最后 3 行

我需要阅读两者之间的线条。我知道维护索引和跳过是其中一种方法......但是还有其他有效的方法(即使使用外部库)?

谢谢

4

3 回答 3

0

我猜你在问是否有直接跳转到文件的第三行而不阅读前两行的问题。一般来说(除非你有一个索引,正如你提到的)答案是否定的。您必须阅读前两行才能知道它们有多长,因此逐行读取文件并忽略第一行的简单解决方案与您所能获得的一样好。

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

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

于 2010-03-30T21:42:35.903 回答
0

使用 commons IO 可以轻松完成,但效率不高,因为它将整个文件加载到内存中。

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

http://commons.apache.org/io/

于 2010-03-30T22:01:45.290 回答
0

正如其他人指出的那样,除非您了解有关文件内容的更多信息,否则不知道,您确实必须按顺序阅读以找出行的开始位置。您可以使用LineNumberReader,它是一个缓冲的字符输入流,用于跟踪行号。

于 2010-03-31T08:18:38.727 回答