我想清空一个文件,我有两种方法:
1)使用带有dwCreationDisposition = TRUNCATE_EXISTING的CreateFile函数!
2)打开文件,使用SetFilePointerEx将文件指针设置为文件的开头,然后调用SetEndOfFile!
有什么区别,我应该使用哪一个?
从本质上讲,这两者都会达到同样的效果,你必须做很多“清空”文件才能在性能上有很大差异 - 如果文件很大,则从文件中释放不再使用的块无论如何,分配将是主要的时间。
当然,如果你想要更多的可移植代码,使用ofstream of("myfile.ext");
也会实现这一点,FILE *f = fopen("myfile.ext", "w");
也会实现这一点(以及同一主题的一些变体)。
一般来说,这些变体之间几乎没有什么区别,它主要是对您目前正在处理的代码最有意义的情况。换句话说,“你现在要用现在的空文件做什么”,以及你可能需要什么样的“句柄”。
从接受的答案中添加答案并未回答实际问题。
使用带有dwCreationDisposition = TRUNCATE_EXISTING的CreateFile函数!
打开文件,使用SetFilePointerEx将文件指针设置为文件的开头,然后调用SetEndOfFile!
dwCreationDisposition
标志。0123456789
并写zxc
,这是文件现在的样子:
zxc3456789
我坚信他们应该允许组合TRUNCATE_EXISTING
和OPEN_ALWAYS
。