在Java中,有没有办法随机化一个太大的文件以适应内存?

前端之家收集整理的这篇文章主要介绍了在Java中,有没有办法随机化一个太大的文件以适应内存?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想要做的是将行重新排列(从CSV读取),然后将第一个随机化的10,000行打印到一个csv,将剩余的行打印到单独的csv.使用较小的文件,我可以做类似的事情
java.util.Collections.shuffle(...)
for (int i=0; i < 10000; i++) printcsv(...)
for (int i=10000; i < data.length; i++) printcsv(...)

但是对于非常大的文件,我现在得到OutOfMemoryError

解决方法

这是一种可能的算法:

>设MAX_LINES为可管理文件中的最大行数;>从输入文件中读取MAX_LINES,用原始算法随机化它们并将它们写入临时文件;>重复2.直到输入文件中没有任何行;>设N是0和你写的临时文件数之间的随机数;从第N个临时文件中读取下一行;>重复4.直到你读完所有文件中的所有行;前10000行将每一行写入第一个输出文件,将所有其他行写入另一个文件.

猜你在找的Java相关文章