@Override
  public void nextPage() throws IOException {
    // read chunk from disk if needed
    if (currentChunkDataBuffer == null) {
      TsFileSequenceReader reader = FileReaderManager.getInstance().get(filePath, tsFileClosed);
      init(reader);
    }
    if (currentChunkDataBuffer.hasRemaining()) {
      // If there is only one page, page statistics is not stored in the chunk header, which is the
      // same as chunkStatistics
      if ((byte) (this.currentChunkHeader.getChunkType() & 0x3F)
          == MetaMarker.ONLY_ONE_PAGE_CHUNK_HEADER) {
        currentPageHeader =
            PageHeader.deserializeFrom(this.currentChunkDataBuffer, this.chunkStatistic);
      } else {
        currentPageHeader =
            PageHeader.deserializeFrom(
                this.currentChunkDataBuffer, this.currentChunkHeader.getDataType());
      }
    }
  }
It will receive a list of offset and execute sequential scan of TsFile for chunkData.
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/filescan/impl/DiskChunkHandleImpl.java