快速生成大文件

在linux下如果不考虑断电系统重启等其他原因可以使用ftruncate()函数,这个函数输入参数为file descriptor 和 offset,
这个函数在unistd.h中,windows一般是用不了这个的。

另外使用文件名得到文件描述符的方法就是int fileno(FILE*); 注意之后别忘了fclose(),下面的代码里忘记写了。

#include #include #include<unistd.h> using namespace std;
int main(){ FILE* f = fopen(“abc.txt”,“w”); int fd = fileno(f); long long
offset = 102410241024*(long long)2; ftruncate(fd,offset); return 0; }

在windows及其他平台可以使用fseeko(FILE* , offset, pos)这个方法

#include #include using namespace std; int main(){ FILE* f =
fopen(“abc.txt”,“w”); long long offset=102410241024*(long long)2;
fseeko(f,offset,SEEK_SET); int i = 10; // write i to file end
fwrite(&i,sizeof(int),1,f); fclose(f); return 0; }

这样就可以快速得到2G的文件了。另外编译时不要忘记添加编译参数 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64

想看大文件测试的结果到 http://blog.csdn.net/cctt_1/archive/2010/05/23/5618652.aspx