2015-05-04 66 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 ... 

這將創建一個空文件,並立即將其重命名,而不需要在任何時候將其關閉。

相關問題