【问题标题】:How to read a file in java based on file number? [duplicate]如何根据文件编号在java中读取文件? [复制]
【发布时间】:2012-10-05 09:56:22
【问题描述】:

可能重复:
Read a specific line from a text file

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

【问题讨论】:

标签: java file


【解决方案1】:

您可以使用 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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      也有例外:

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

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

      【讨论】:

        猜你喜欢
        • 2020-02-03
        • 2011-09-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-14
        • 1970-01-01
        • 2020-01-20
        • 2019-07-20
        相关资源
        最近更新 更多