最終更新日時(UTC):
が更新

履歴 編集

function
<filesystem>

std::filesystem::directory_entry::status(C++17)

file_status status() const;                             // (1)
file_status status(std::error_code& ec) const noexcept; // (2)

概要

ファイル状態を取得する。

戻り値

値がキャッシュされている場合は、それを返す。キャッシュされていない場合は、

例外

#include <iostream>
#include <filesystem>
#include <fstream>
#include <string>

namespace fs = std::filesystem;

std::string file_type_to_string(fs::file_type type) {
  switch (type) {
    case fs::file_type::none:       return "none";
    case fs::file_type::not_found:  return "not found";
    case fs::file_type::regular:    return "regular file";
    case fs::file_type::directory:  return "directory file";
    case fs::file_type::symlink:    return "symbolic link file";
    case fs::file_type::block:      return "block special file";
    case fs::file_type::character:  return "character special file";
    case fs::file_type::fifo:       return "FIFO or pipe file";
    case fs::file_type::socket:     return "socket file";
    case fs::file_type::unknown:    return "unknown type file";
    default:
      return "implementation-defined file type";
  }
}

int main()
{
  fs::create_directory("dir");
  fs::create_directory("dir/inner_dir");
  std::ofstream{"dir/a.txt"};

  for (const fs::directory_entry& x : fs::directory_iterator("dir")) {
    fs::file_status st = x.status();
    std::cout << x.path() << " : " << file_type_to_string(st.type()) << std::endl;
  }
}

出力例

"dir/inner_dir" : directory file
"dir/a.txt" : regular file

バージョン

言語

  • C++17

処理系