【Linux】【C++17】filesystem 工具,常用集合

博客主要介绍了C++中std::experimental::filesystem命名空间下的相关操作。包括查找文件是否存在、判断是否为目录、单层级和多层级目录创建,还介绍了文件迭代器类和文件路径类,编译时需链接特定库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

🔗cpp官网链接指路

header:

<experimental/filesystem>

编译需链接如下库:

-lstdc++fs

1. std::experimental::filesystem::exists() 查找文件是否存在

content:

bool exists( file_status s )	// 1
bool exists( const path& p );	// 2
bool exists( const path& p, error_code& ec )

1)相当于 status_known(s) && s.type() != file_type::not_found
2)相当于 exists(status(p)) or exists(status(p, ec))

2. std::experimental::filesystem::is_directory() 判断是否是一个目录

bool is_directory( file_status s );					// 1
bool is_directory( const path& p );					// 2
bool is_directory( const path& p, error_code& ec );	// 3

1)相当于 s.type() == file_type::directory
2)相当于 is_directory(status(p))
3)相当于 is_directory(status(p, ec)). Returns false if error occurs.


3. std::experimental::filesystem::create_directory() 单层级目录创建

content:

// 1
bool create_directory( const path& p );		
bool create_directory( const path& p, error_code& ec );
// 2
bool create_directory( const path& p, const path& existing_p );	
bool create_directory( const path& p, const path& existing_p, error_code& ec );

1) 使用 static_cast(fs::perms::all) 的第二个参数创建目录 p (父目录必须已经存在)。如果 p 已经存在并且已经是一个目录,则函数不执行任何操作(此条件不作为错误处理)。

2)与(1)相同,只不过新目录的属性是从现有的 _ p 复制的(它必须是一个已存在的目录)。复制哪些属性取决于操作系统。

std::experimental::filesystem::create_directories 多层级目录创建

content:

bool create_directories( const path& p );
bool create_directories( const path& p, error_code& ec );

3)对不存在的 p 的每个元素执行 (1)

4. class std::experimental::filesystem::directory_iterator 文件迭代器类

constructor:

directory_iterator();
explicit directory_iterator( const path& p );
directory_iterator( const path& p, error_code& ec );
directory_iterator( const directory_iterator& ) = default;
directory_iterator( directory_iterator&& ) = default;

5. class std::experimental::filesystem::path 文件路径类

constructor:

path();
path( const path& p );
path( path&& p );
template< class Source >
path( const Source& source );
template< class InputIt >
path( InputIt first, InputIt last );
template< class Source >
path( const Source& source, const std::locale& loc );
template< class InputIt >
path( InputIt first, InputIt last, const std::locale& loc );

Decomposition

APIDISCUSSION
root_namereturns the root-name of the path, if present (public member function)
root_directoryreturns the root directory of the path, if present (public member function)
root_pathreturns the root path of the path, if present (public member function)
relative_pathreturns path relative to the root path (public member function)
parent_pathreturns the path of the parent path (public member function)
filenamereturns the filename path component (public member function)
stemreturns the stem path component (public member function)
extensionreturns the file extension path component (public member function)

🥰如果本文对你有些帮助,请给个赞或收藏,你的支持是对作者大大莫大的鼓励!!(✿◡‿◡) 欢迎评论留言~~


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值