可能重复:
从文本文件中读取特定行
有没有办法在java中读取文件中的一行。我的意思是如果我只想读取第100行,那么我可以直接读取它吗?或者我必须阅读整个文件,直到第 100 行。
可能重复:
从文本文件中读取特定行
有没有办法在java中读取文件中的一行。我的意思是如果我只想读取第100行,那么我可以直接读取它吗?或者我必须阅读整个文件,直到第 100 行。
不,无论抽象如何,实际上都没有一种有效的方法可以“直接”从文件系统中读取第 100 行。您当然可以使用偏移量,以防每行具有固定长度的行(假设 CR 或 LF 等),仅此而已。您不能基于“行”抽象在文件中跳转。
您可以使用 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
在大多数情况下,您需要从文件开头逐行读取。
这也有例外:
如果您为文件创建和维护指示每行开始位置的索引,则可以在索引中查找一行,然后seek
将文件查找到要读取它的位置。
如果您的文件由固定长度的行组成,您可以将行首的位置计算为line_no * line_length
,然后计算seek
到该位置。