我想要一种在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。
感谢。
答案 0 :(得分:5)
如果要一次生成随机位,而不是循环,请查看使用随机字节填充指定字节数组的java.util.Random method nextBytes(byte[])。为2GiB数据创建一个足够大的字节数组,您可以一次性生成整个随机位源。
答案 1 :(得分:4)
尝试使用BufferedOutputStream包装FileOutputStream。