求助:如何快速创建一个大文件?

leo_dengzx 2010-12-06 10:16:10
比如1G的文件,迅雷创建出来只需要1秒,不知道怎么实现的。我们在linux下,创建文件,然后seek到1G的位置,写入结束符,需要50秒。

是否有更快速的方法呢?

谢谢!
...全文
314 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
leo_dengzx 2010-12-10
  • 打赏
  • 举报
回复
谢谢大家,这个问题暂时不解决了,也没有效的解决办法。
沭水河畔 2010-12-10
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 leo_dengzx 的回复:]
谢谢大家,这个问题暂时不解决了,也没有效的解决办法。
[/Quote]
使用truncate(或ftruncate)函數可以的:

#include <stdio.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>

int main(int argc,char *argv[])
{
int n=truncate("test1g.dat",102400000);
perror(NULL);
printf("%d\n",n);

return 0;
}

瞬間將文件擴展到約100MB。
hawk198 2010-12-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wzzww 的回复:]

引用 4 楼 lishanchao 的回复:
是不是直接設置了stat結構體的st_size值?

对的,那时压根就没有写任何内容。
[/Quote]
实际就是如此,只是占坑而已
freetstar 2010-12-06
  • 打赏
  • 举报
回复
迅雷创建的只是一个说是1G的文件,实际上是慢慢往里头写的!我的一个同学跟我说过这个问题,并不开始就是所谓的真实占用了1G的地方
无知者无谓 2010-12-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lishanchao 的回复:]
是不是直接設置了stat結構體的st_size值?
[/Quote]
对的,那时压根就没有写任何内容。
沭水河畔 2010-12-06
  • 打赏
  • 举报
回复
是不是直接設置了stat結構體的st_size值?
steptodream 2010-12-06
  • 打赏
  • 举报
回复
只会dd的方式

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧