小编典典

用Java创建具有给定大小的文件

java

有没有一种 有效的 方法来用Java创建具有给定大小的文件?

在C语言中,可以使用ftruncate来完成。

大多数人只会将 n个
虚拟字节写入文件,但是必须有一种更快的方法。我在考虑ftruncate以及稀疏文件


阅读 306

收藏
2020-09-08

共1个答案

小编典典

创建一个新的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)   = 4
6070  fstat(4, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
6070  lseek(4, 0, SEEK_CUR)             = 0
6070  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

在两种情况下,这都会导致创建稀疏文件。

2020-09-08