在boost文件系统中,有一个函数create_directory
可以创建一个目录。如何创建文件?我可以通过定义一个boost::filesystem::ofstream
对象创建一个,但也可以打开文件,因此我必须在它上面调用close
之前我可以做其他事情,比如重命名或删除。这是唯一的方法吗?
答案 0 :(得分:7)
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 :(得分:2)
您可以使用类似
的内容 // ... code ...
boost::filesystem::ofstream( "/path/to/file" );
boost::filesystem::rename( "/path/to/file", "/path/to/renamed_file" );
// ... code ...
将创建一个空文件并立即重命名,无需在任何时候关闭它。