1
我正在写一个C++ ofstream,有时必须清理 - 我正在写入的文件应该被删除,并删除和清除类。C++ ofstream删除和清理
怎么样? (除了关闭它并按名称删除它)。
(至少是文件不应该与它被打开了预期的位置和文件名存在 - 临时文件目录可能是OK)
我正在写一个C++ ofstream,有时必须清理 - 我正在写入的文件应该被删除,并删除和清除类。C++ ofstream删除和清理
怎么样? (除了关闭它并按名称删除它)。
(至少是文件不应该与它被打开了预期的位置和文件名存在 - 临时文件目录可能是OK)
据我所知,目前还没有其他办法。关闭该文件并使用其名称使用 remove
。
这可能是最好的处理某种RAII类; 我经常使用OutputFile
类,它隐式地将 转换为std::ostream&
(用于输出)。构造函数采用文件名称 ;有一个commit
函数关闭文件, 但如果在commit
之前调用析构函数,则不仅 关闭该文件,而是删除它。类似地,有一个 UpdateFile
类,这将打开 filename.new
— commit
然后重命名 filename
到filename.bak
(删除与该名称的任何先前存在的文件),和 移动filename.new
到 filename
。破坏者删除 filename.new
。 (A变种检查是否 新的内容是从旧的不同之处commit
,所以,如果有在内容没有变化 文件的时间戳不会改变。)
不能安全地删除/移动文件仍然是开放的。 – us2012 2013-02-26 10:01:44
我的意思是,该文件可能有一个临时名称,直到我关闭(这似乎是我的Visual C++版本中的那种方式)。如果我可以让它离开它,那就没问题。 – user1987442 2013-02-26 13:42:20