Tae*_*hin 6 c++ windows file-io
我需要在Windows操作系统中创建一个填充零的巨大二进制文件.它的大小是给定的.在C/C++中最有效的方法是什么?
试着打电话truncate(2):
truncate("/my/file", my_size);
Run Code Online (Sandbox Code Playgroud)
欲获得更多信息,
man 2 truncate
Run Code Online (Sandbox Code Playgroud)
truncate()和ftruncate()函数使得由path命名或由fd引用的常规文件被截断为精确长度字节的大小.
如果先前的文件大于此大小,则额外数据将丢失.如果先前的文件较短,则会扩展,扩展部分读取为空字节('\ 0').
如果您正在寻找Windows本机函数,请查看SetEndOfFile,它可以执行相同的操作.
如果文件确实需要全为零,那么除了写入所有数据之外别无他法.我可能会使用与驱动器块大小相同大小的缓冲区,并将其写入循环,直到您写入所需的大小.
如果文件可以包含未定义数据的"漏洞"(磁盘上已经存在的内容),则可以寻找指定的大小并写入单个字节.