我的基本問題是,這段代碼幾乎總是會拋出異常:可移植性測試C++中的文件夾?
bool DirectoryRange::isDirectory() const
{
struct stat s;
stat(ep->d_name, &s);
#if defined(__linux__)
if((S_ISDIR(s.st_mode) != 0) != (ep->d_type == DT_DIR))
{
throw std::logic_error("Directory is not directory");
}
#endif
return S_ISDIR(s.st_mode);
}
bool DirectoryRange::isFile() const
{
struct stat s;
stat(ep->d_name, &s);
#if defined(__linux__)
if((S_ISREG(s.st_mode) != 0) != (ep->d_type == DT_REG))
{
throw std::logic_error("File is not file");
}
#endif
return S_ISREG(s.st_mode);
}
檢查的dirent值不便攜,但是越來越正確的答案;而統計錯誤,但是便攜。
那麼如果stat看起來不起作用,我該如何檢查目錄?
嘗試Boost.Filesystem的。 –
這裏有一些小瑣碎的瑣事,但並不是所有的文件系統都有文件夾的概念。大型機,特別是沒有。希望你永遠不需要知道這一點,但以防萬一......就是這樣。 – Brad