可以从中间读取csv文件吗?

时间:2019-09-24 14:19:39

标签: java csv

可以从开始索引到结束索引读取文件。

Files.lines(Paths.get("file.csv")).skip(1000000).limit(1000).forEach(s-> {});

但这不是性能。是否可以从文件中间读取csv文件的性能?

2 个答案:

答案 0 :(得分:0)

java RandomAccessFile类方法有帮助吗? seekskipBytes之类的东西。您可以找到教程。

答案 1 :(得分:0)

这取决于它的可预测性,“中间”的确切含义以及您认为“从中间读取”的内容。

如果“中间”必须是确切的行,那么您将必须读取该中间之前的所有字节,因为否则,您可能会错过结尾行的字节(并且唯一的方法是使用CSV文件知道第N行在哪里,就是要准确地读取N-1行尾字符,直到到达该位置为止)。必须读取直到一个点的所有字节在时间上是线性的,并且肯定不如实际一次跳入其中那么快-但对于您来说,这可能算作“从中间读取”。

如果文件具有很高的可预测性(所有行的长度都大致相同),并且您不太在乎准确地位于中间,那么您始终可以采用文件的长度L,然后跳到包含换行符的位置L/2之前的最后一个位置。由于文件是可预测的,下一个位置很有可能是“中间线”。