boost之判斷資料夾/檔案是否存在
阿新 • • 發佈:2018-12-07
判斷資料夾或者檔案是否存在,如果不存在則新建資料夾,或者檔案。
本程式碼只是單元測試版本,需要自己按需求寫成函式。
#include <string> #include <iostream> #include <boost/filesystem.hpp> #include <boost/filesystem/fstream.hpp> // must include int main(int argc, char** argv) { std::string test_dir = "/home/test"; std::string test_file = test_dir + "/test.txt"; if (!boost::filesystem::exists(test_dir)) { std::cout << "test directory doesn't exist, creat it now" << std::endl;; if (!boost::filesystem::create_directories(test_dir)) { std::cout << "can not create test directory!" << std::endl;; } else { std::cout << "create test directory successfully!" << std::endl;; } } if (!boost::filesystem::exists(test_file)) { std::cout << "test file doesn't exist, create it now!" << std::endl; boost::filesystem::ofstream file(test_file); file.close(); std::cout << "create test file successfully!" << std::endl; } return 0; }
改進:由於boost::filesystem::exists(test_dir)
該函式不區分資料夾還是檔案,所以如果判斷檔案是否存在,還需要使用boost::filesystem::is_directory(test_dir)
.
加強版程式碼:
bool IsFileExistent(const boost::filesystem::path& path) { boost::system:error_code error; auto file_status = boost::filesystem::status(path, error); if (error) { return false; } if (! boost::filesystem::exists(file_status)) { return false; } if (boost::filesystem::is_directory(file_status)) { return false; } return true; }
參考
最後分享[我來喬23](https://www.cnblogs.com/MakeView660/)
這位兄臺寫的一句話吧!
希望大家能把自己的所學和他人一起分享,不要去鄙視別人索取時的貪婪,因為最應該被鄙視的是不肯分享時的吝嗇。