[高分求教] 请问如何新建一个文件,然后不通过拷贝直接设置文件大小呢

时间:2022-11-17 18:16:31
我想实现在下载文件前先按照文件大小在本地预分配空间,以使得下载后的文件在磁盘上能够保留连续性,已经试过两种方法,一种是最直观的,按文件大小写入某字符进新文件,另一种是用CreateFileMapping的方法,将新建文件的句柄传入,制定其dwMaximumSizeLow为文件大小。
    第一种方法最滥,又慢又无法保证连续分布,第二种我不知道它的底层实现,但一样是很慢(对上G大小的文件来说)
    请问各位大虾有没有其他方法实现文件的预分配空间呢?

5 个解决方案

#1


关注,帮顶

#2


SetFilePointer

#3


#include <io.h>
#include <fcntl.h>
#include <sys/stat.h>


void main()
{
int handle=_open(".\\tmp.dat",_O_RDWR | _O_CREAT, _S_IREAD | _S_IWRITE );
_chsize(handle,1024*1024);
_close(handle);
}

#4


ls非常正确加100分

#5


Good,性能比我之前提到的方法来得快,而且不会导致系统一点都动不了。结帖

#1


关注,帮顶

#2


SetFilePointer

#3


#include <io.h>
#include <fcntl.h>
#include <sys/stat.h>


void main()
{
int handle=_open(".\\tmp.dat",_O_RDWR | _O_CREAT, _S_IREAD | _S_IWRITE );
_chsize(handle,1024*1024);
_close(handle);
}

#4


ls非常正确加100分

#5


Good,性能比我之前提到的方法来得快,而且不会导致系统一点都动不了。结帖