namespace std::filesystem {
enum class file_type {
none,
not_found,
regular,
directory,
symlink,
block,
character,
fifo,
socket,
implementation-defined,
unknown
};
}
概要
ファイル種別を表す列挙型。
それぞれの列挙子の値は未規定だが、異なる値を持つ。
各列挙子は、以下の意味を持つ:
列挙子 | 説明 |
---|---|
none |
ファイル種別を判定できなかったか、判定を試みてエラーが発生した |
not_found |
ファイルが見つからなかったことを表す擬似的な種別 |
regular |
通常のファイル |
directory |
ディレクトリ・ファイル |
symlink |
シンボリックリンク・ファイル |
block |
ブロック・スペシャル・ファイル。ブロックデバイスとも呼ばれる |
character |
キャラクタ・スペシャル・ファイル。キャラクタデバイスとも呼ばれる |
fifo |
FIFOファイルもしくはパイプファイル |
socket |
ソケットファイル |
implementation-defined | OSのファイルシステムがサポートする実装定義のファイル種別 |
unknown |
ファイルは存在するが種別を決定できなかった |
例
#include <iostream>
#include <filesystem>
#include <fstream>
namespace fs = std::filesystem;
int main()
{
std::ofstream{"a.txt"};
fs::file_status status = fs::status("a.txt");
fs::file_type type = status.type();
switch (type) {
case fs::file_type::none:
std::cout << "none" << std::endl;
break;
case fs::file_type::not_found:
std::cout << "not found" << std::endl;
break;
case fs::file_type::regular:
std::cout << "regular file" << std::endl;
break;
case fs::file_type::directory:
std::cout << "directory file" << std::endl;
break;
case fs::file_type::symlink:
std::cout << "symbolic link file" << std::endl;
break;
case fs::file_type::block:
std::cout << "block special file" << std::endl;
break;
case fs::file_type::character:
std::cout << "character special file" << std::endl;
break;
case fs::file_type::fifo:
std::cout << "FIFO or pipe file" << std::endl;
break;
case fs::file_type::socket:
std::cout << "socket file" << std::endl;
break;
case fs::file_type::unknown:
std::cout << "unknown type file" << std::endl;
break;
default:
std::cout << "implementation-defined file type" << std::endl;
break;
}
}
出力
regular file
バージョン
言語
- C++17
処理系
- Clang: 7.0 ✅
- GCC: 8.1 ✅
- Visual C++: