java - 在Java中创建给定大小的文件

标签 java file

有没有一种高效的方法可以在 Java 中创建具有给定大小的文件?

在 C 中可以使用 ftruncate 来完成。 (见 that answer)。

大多数人只会将 n 个虚拟字节写入文件,但必须有更快的方法。我在想ftruncate还有Sparse files

最佳答案

创建一个新的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

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

关于java - 在Java中创建给定大小的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/245251/

相关文章:

java - Recyclerview选择不一致

java.util.定时器 : Is it deprecated?

regex - Notepad++ 可以将搜索结果保存到文本文件吗?

c - 二进制文件的打开方式

file - 示例 dBase 文件

java - 如何配置 JBoss 6.3.0GA 使用 RMI JMX?

java - Netbeans 和实体生成

java - 如何创建独立的 SQL DB 文件以与我的 java 聊天应用程序一起使用?

java - 为什么 java 允许向 List<String> 添加 int ?为什么泛型在编译时和运行时都没有严格实现?

javascript - 在 js 中,为什么我的文件阅读器在编辑输入文件时无法跟踪它