在Java中创建包含随机字节的2GB文件的最快方法是什么?

Rob*_*phy 4 java random byte bit

我想要一种方法来生成一个包含Java中随机位的文件.什么会创建最快的随机文件?我想创建包含随机位的任何指定大小的文件.我希望能够在几分钟内生成2GB文件(如果可能的话,不到一分钟).我现在使用的技术需要几个小时才能完成2GB:

...
private static Random r = new Random();

private static int rand(int lo, int hi) {
    int n = hi - lo + 1;
    int i = r.nextInt() % n;
    if (i < 0) {
        i = -i;
    }
    return lo + i;
}
...
fos = new FileOutputStream(hdFiller);
for(long i = 0; i < maxFileSize; i++) {
    int idx = rand(0,32);
    fos.write(idx);
}
fos.close();
...
Run Code Online (Sandbox Code Playgroud)

必须有一种方法可以更快地完成这项工作,甚至可以在不到一分钟的时间内完成2GB.

谢谢.

Bob*_*ous 5

如果要一次生成随机位而不是循环,请查看java.util.Random方法nextBytes(byte []),该方法用随机字节填充指定的字节数组.创建一个足够大的字节数组,用于2GiB数据,您可以一次性生成整个随机位源.

  • 不要这样做,因为你的程序将需要2GB的内存,并且很可能由于堆内存错误而崩溃.而是以较小的块生成字节数组. (4认同)