我正在编写一个有时必须清理的 C++ ofstream - 我正在写入的文件应该被删除,并且类应该被删除和清理。
如何?(除了关闭它并按名称删除它)。
(至少该文件不应该以打开它的预期位置和文件名存在 - tempfile 目录可以)
我正在编写一个有时必须清理的 C++ ofstream - 我正在写入的文件应该被删除,并且类应该被删除和清理。
如何?(除了关闭它并按名称删除它)。
(至少该文件不应该以打开它的预期位置和文件名存在 - tempfile 目录可以)
据我所知,没有其他办法。关闭文件并使用
remove
其名称。
这可能最好由某种 RAII 类来处理;我经常使用一个OutputFile
类,它隐式转换为std::ostream&
(用于输出)。构造函数采用文件名;有一个commit
关闭文件的函数,但是如果之前调用了析构函数commit
,它不仅会关闭文件,还会删除它。类似地,有一个
UpdateFile
类打开
filename.new
-commit
然后重命名
filename
为filename.bak
(删除任何以前存在的具有该名称的文件),然后移动filename.new
到
filename
. 析构函数删除
filename.new
. (变体检查新内容是否与旧 in 不同commit
,因此如果内容没有变化,文件时间戳不会改变。)