C ++ ofstream不会改变mtime

时间:2012-05-20 21:04:15

标签: c++ touch fstream ofstream

基本上我想做与系统调用touch相同的事情(如果文件不存在则创建文件,如果有,则更新其修改时间戳)。

std::string file = ...;
std::ofstream(file.c_str(), std::ios::app);

如果文件不存在,这将创建该文件。但它不会改变修改时间。

std::string file = ...;
std::ofstream(file.c_str(), std::ios::out);

这将创建它,如果它不存在,它将更新修改时间,如果它,但它也将截断该文件,如果它存在。

那么如何触摸文件?

1 个答案:

答案 0 :(得分:2)

Kerrek SB发布了解决方案,但不幸的是comment而不是答案(我更愿意接受他的回答)。

我在utime(2)

取得了成功
#include <utime.h>
...
std::string path = "/path/to/my/file";
bool success = !utime(path.c_str(), 0);

David Schwartz mentioned utimensat,精确到纳秒级。