2015-05-04 20 views
6

在boost文件系统中有一个功能create_directory它创建一个目录。我如何创建一个文件?我可以通过定义一个boost::filesystem::ofstream对象来创建一个对象,但这也会打开该文件,因此我必须先调用close才能对其执行其他操作,例如重命名或删除。这是唯一的方法吗?如何创建带有boost文件系统的文件而不打开它

回答

5

Boost Filesystem V3不提供touch(1)函数;

即使touch将创造+关闭文件,只需看看strace输出:

open("/tmp/q", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 47 
dup2(47, 0)        = 0 
close(47)        = 0 
utimensat(0, NULL, NULL, 0)    = 0 

我觉得你最合理的办法是只创建一个关闭文件的包装功能。

1

你可以只使用类似

// ... code ... 
    boost::filesystem::ofstream("/path/to/file"); 
    boost::filesystem::rename("/path/to/file", "/path/to/renamed_file"); 
    // ... code ... 

这将创建一个空文件,并立即将其重命名,而不需要在任何时候将其关闭。

相关问题