创建一个新的RandomAccessFile并调用setLength方法,指定所需的文件长度。底层JRE实现应使用您环境中可用的最有效方法。
以下程序
import java.io.*;class Test { public static void main(String args[]) throws Exception {RandomAccessFile f = new RandomAccessFile("t", "rw");f.setLength(1024 * 1024 * 1024); }}在Linux机器上将使用ftruncate(2)分配空间
6070 open("t", O_RDWR|O_CREAT, 0666) = 46070 fstat(4, {st_mode=S_IFREG|0644, st_size=0, ...}) = 06070 lseek(4, 0, SEEK_CUR) = 06070 ftruncate(4, 1073741824) = 0在Solaris机器上,它将使用fcntl(2)系统调用的F_FREESP64函数。
/2: open64("t", O_RDWR|O_CREAT, 0666) = 14/2: fstat64(14, 0xFE4FF810) = 0/2: llseek(14, 0, SEEK_CUR) = 0/2: fcntl(14, F_FREESP64, 0xFE4FF998) = 0在两种情况下,这都会导致创建稀疏文件。



