文件操作——linux快速创建大文件的方法

来源:互联网 发布:java最新官网下载地址 编辑:程序博客网 时间:2024/04/29 04:02

还记得去年在准备某公司的笔试时遇到了一道题目,题目中要求”快速创建1G的大文件“,后面的要求这里暂且就省略了。如何快速创建指定大小的大文件呢?可能有很多种办法,这里提供两种办法。

1、利用dd命令操作创建文件

//结合C语言,可以使用system函数调用shell命令char *shell = "dd if=/dev/zero of=test.txt bs=1K count=1024";system(shell);

其中 if=输入的文件,of=输出文件,bs=块大小 ,count=块数量。
bs和count的单位设置,man函数中提及如下,查看完整参数请参见Manuel手册:

BLOCKS  and  BYTES may be followed by the following multiplicative suffixes: c =1, w =2,  b  =512,  kB  =1000,  K  =1024,  MB  =1000*1000,  M=1024*1024,  xM =M GB =1000*1000*1000,  G=1024*1024*1024, and so on for T, P, E, Z, Y.

2、利用文件操作的文件指针移位产生空洞文件
这里指的是将文件指针移动到距离文件头指定大小的地方,再进行写操作(注意,这里移动完文件位移量后一定要写点东西,否则无效

int main(void){    int fd ;    fd = open("test.txt" , O_CREAT|O_RDWR , 0777);    if( fd < 0)    {        printf("open file error\n");        return 0;    }    //为了创建一个大小为3M的文件,我们先少创建2个字节,然后在写文件的时候补充2字节    lseek(fd , 1024 * 1024 *3 -2, L_SET);    write(fd , "e" , 1);    close(fd);    return 0 ;}
0 0
原创粉丝点击