在Java
中,如果文件的大小为335Gb
,每行包含单独的数字,我需要逐行读取,就像它是一个数字流一样 - 我不能保留所有内存中的数据。我被告知Scanner
课程不起作用。你能否推荐一种最好的方法来做到这一点?
答案 0 :(得分:3)
没有java.io输入流类会将所有数据保存在内存中#34;。我认为你可以自由选择最适合你的东西,比如BufferedReader或DataInputStream等。
答案 1 :(得分:1)
如果您使用BufferedReader,您应该能够在一个线程中获得高达90 MB / s的速度。
您可以使用技巧来分解文件并同时读取部分数据,但这只会在您的磁盘读取吞吐量很高时才有用。
例如,您可以在不使用堆的情况下将335 GB映射到内存中。即使您拥有这一主存储量的一小部分,这也会有效。
您的磁盘子系统可以获得什么样的读取传输速率?