我需要创建大的相对较大(1-8 GB)的文件.使用C或C++在Windows上执行此操作的最快方法是什么?我需要动态创建它们,速度确实是一个问题.文件将用于存储仿真,即将在不同的偏移量中随机访问,我需要预先分配所有存储但未初始化,目前我们正在使用虚拟数据写入所有存储,并且花费的时间太长.
谢谢.
使用Win32 API,CreateFile,SetFilePointerEx,SetEndOfFile和CloseHandle.以同样的顺序.
诀窍在于SetFilePointerEx函数.来自MSDN:
请注意,将文件指针设置为超出文件末尾的位置不是错误.在调用SetEndOfFile,WriteFile或WriteFileEx函数之前,文件的大小不会增加.
将文件从一个位置复制到另一个位置时,Windows资源管理器实际上也会这样做.它这样做是为了使磁盘不需要为碎片磁盘重新分配文件.