2

可能重复:
从文本文件中读取特定行

有没有办法在java中读取文件中的一行。我的意思是如果我只想读取第100行,那么我可以直接读取它吗?或者我必须阅读整个文件,直到第 100 行。

4

3 回答 3

3

不,无论抽象如何,实际上都没有一种有效的方法可以“直接”从文件系统中读取第 100 行。您当然可以使用偏移量,以防每行具有固定长度的行(假设 CR 或 LF 等),仅此而已。您不能基于“行”抽象在文件中跳转。

于 2012-10-05T10:00:18.583 回答
3

您可以使用 java.io.RandomAccessFile。

移动到第 100 行使用以下行:

RandomAccessFile file = new RandomAccessFile("D:\\test.txt", "rw");
int totalLines = (int)file.length();
file.seek(100);
long pointer = file.getFilePointer();


for(int pt = 100; ct < totalLines; ct++){
  byte b = file.readByte(); //read byte from the file
  System.out.print((char)b); //convert byte into char
}

file.close();

有关更多详细信息,请参阅以下链接,这将对您有所帮助:http: //tutorials.jenkov.com/java-io/randomaccessfile.html

于 2012-10-05T10:06:57.623 回答
0

在大多数情况下,您需要从文件开头逐行读取。

这也有例外:

  • 如果您为文件创建和维护指示每行开始位置的索引,则可以在索引中查找一行,然后seek将文件查找到要读取它的位置。

  • 如果您的文件由固定长度的行组成,您可以将行首的位置计算为line_no * line_length,然后计算seek到该位置。

于 2012-10-05T10:03:54.307 回答