有一天,我正在开发BT软件,它有这样的一个功能,就是先把文件的大小分配好,然后再慢慢地往里面对应的位置写入相应的数据。这样的好处,就是可以先把磁盘空间占用起来,以便后面的下载顺利进行。要实现这个功能,就需要创建一个空的文件,然后把文件指针设置到相应大小的位置,然后再调用函数SetEndOfFile来设置文件的结束位置,这样文件就有相应的大小了。在BT软件的开发里,也发现目录的处理时需要详细地记录目录里的文件大小,这就需要使用GetFileSizeEx函数来获取文件的大小。由于BT里的视频文件比较大,有可能几G的,一定要使用GetFileSizeEx函数来处理,这样就可以获取比较大的文件而不出错。
函数
FlushFileBuffers
和
SetFilePointer
声明如下:
WINBASEAPI
BOOL
WINAPI
SetEndOfFile(
__in HANDLE hFile
);
BOOL
WINAPI
GetFileSizeEx(
__in HANDLE hFile,
__out PLARGE_INTEGER lpFileSize
);
hFile
是文件句柄。
lpFileSize
是获取文件返回的大小。