可以从开始索引到结束索引读取文件。
Files.lines(Paths.get("file.csv")).skip(1000000).limit(1000).forEach(s-> {});
但这不是性能。是否可以从文件中间读取csv文件的性能?
答案 0 :(得分:0)
java RandomAccessFile类方法有帮助吗? seek
,skipBytes
之类的东西。您可以找到教程。
答案 1 :(得分:0)
这取决于它的可预测性,“中间”的确切含义以及您认为“从中间读取”的内容。
如果“中间”必须是确切的行,那么您将必须读取该中间之前的所有字节,因为否则,您可能会错过结尾行的字节(并且唯一的方法是使用CSV文件知道第N
行在哪里,就是要准确地读取N-1
行尾字符,直到到达该位置为止)。必须读取直到一个点的所有字节在时间上是线性的,并且肯定不如实际一次跳入其中那么快-但对于您来说,这可能算作“从中间读取”。
如果文件具有很高的可预测性(所有行的长度都大致相同),并且您不太在乎准确地位于中间,那么您始终可以采用文件的长度L
,然后跳到包含换行符的位置L/2
之前的最后一个位置。由于文件是可预测的,下一个位置很有可能是“中间线”。