gpt4 book ai didi

c++ - 如何在 Windows 上为 C/C++ 中的文件预先分配空间?

转载 作者:IT老高 更新时间:2023-10-28 22:18:05 27 4
gpt4 key购买 nike

我正在向使用纯 C 函数(fopenfwritefclose)写入数据的现有代码库添加一些功能出一个文件。不幸的是,我无法更改文件 i/o 的实际机制,但我必须为文件预先分配空间以避免碎片(这会破坏我们在读取期间的性能)。有没有比将零或随机数据实际写入文件更好的方法?我在打开文件时知道文件的最终大小。

我知道我可以在 linux 上使用 fallocate,但我不知道 windows 等效项是什么。

谢谢!

最佳答案

以编程方式,在 Windows 上,您必须使用 Win32 API 函数来执行此操作:

SetFilePointerEx() followed by SetEndOfFile()

您可以使用这些函数为文件预先分配簇并避免碎片。这比将数据预写入文件更有效。在执行 fopen() 之前执行此操作。

如果您想完全避免使用 Win32 API,您也可以使用 system() 函数发出以下命令以非编程方式进行:

fsutil file createnew filename filesize

关于c++ - 如何在 Windows 上为 C/C++ 中的文件预先分配空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7970333/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com