5

我想要一种在 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();
...

必须有一种方法可以更快地做到这一点,甚至可能在不到一分钟的时间内完成 2GB。

谢谢。

4

2 回答 2

6

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

于 2012-08-10T18:24:18.910 回答
4

尝试使用 BufferedOutputStream 包装您的 FileOutputStream。

于 2012-08-10T18:21:12.987 回答