【发布时间】:2013-09-11 12:27:13
【问题描述】:
我想清空一个文件,我有两种方法:
1) 使用带有 dwCreationDisposition = TRUNCATE_EXISTING 的 CreateFile 函数!
2) 打开文件,用SetFilePointerEx设置文件指针指向文件开头,然后调用SetEndOfFile!
有什么区别,我应该使用哪一个?
【问题讨论】:
-
第三种方式怎么样:
ofstream x("C:\\file.txt", ios_base::trunc);? -
@MM。
ofstreams 缺少很多CreateFile所提供的功能(例如FILE_FLAG_DELETE_ON_CLOSE或FILE_FLAG_OVERLAPPED)。与CreateFile相比,ofstream通过异常报告错误。这既不好也不坏,但肯定是不同的。 -
@IInspectable:选择这种方式的主要原因是编写可移植的代码(但是 OP 肯定谈到了 Windows)。
-
@MM。我不介意便携性。以可移植性为目标通常是一件好事。但是,在处理文件/文件系统时,通常不是。例如,您的替代解决方案不支持 UNICODE 文件名。这是一个真正的交易障碍。