NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
path_tree类 参考

文件路径树 更多...

#include <path_tree.hpp>

类 path_tree 继承关系图:
[图例]

class  node
 路径树节点 更多...
struct  scan_options
 文件系统扫描选项 更多...

Public 类型

enum class  node_type : uint8_t { unknown = 0 , directory = 1 , file = 2 , symlink = 3 }
 节点类型枚举 更多...
enum class  visit_result : uint8_t { proceed = 0 , skip = 1 , stop = 2 }
 遍历控制指令 更多...
using visitor = function<visit_result(const node&)>
 节点访问回调类型
using filter = function<bool(const node&)>
 节点过滤器类型

Public 成员函数

 path_tree (path root_path)
 从路径构造树
NEFORCE_NODISCARD node::ptr root () const noexcept
 获取根节点
NEFORCE_NODISCARD bool empty () const noexcept
 树是否为空
NEFORCE_NODISCARD size_t size () const
 获取树中节点总数
NEFORCE_NODISCARD size_t max_depth () const
 获取树的最大深度
NEFORCE_NODISCARD node::ptr find (const path &p) const
 通过绝对路径查找节点
NEFORCE_NODISCARD vector< node::ptrfind_all (string_view name) const
 通过文件名查找所有匹配节点
NEFORCE_NODISCARD vector< node::ptrfind_if (const filter &f) const
 通过过滤器查找所有匹配节点
NEFORCE_NODISCARD vector< node::ptrfind_by_extension (string_view ext) const
 通过扩展名查找所有文件节点
void traverse_dfs (const visitor &visitor) const
 深度优先遍历(前序)
void traverse_bfs (const visitor &visitor) const
 广度优先遍历
void traverse_files (const visitor &visitor) const
 仅遍历文件节点(深度优先)
void traverse_dirs (const visitor &visitor) const
 仅遍历目录节点(深度优先)
node::ptr insert (const path &p, node_type type=node_type::file)
 手动插入路径节点
bool remove (const path &p)
 移除指定路径的节点及其子树
void merge (const path_tree &other)
 将另一棵树合并到当前树
NEFORCE_NODISCARD path_tree subtree (const path &p) const
 获取以指定路径为根的子树
NEFORCE_NODISCARD path_tree prune (const filter &f) const
 按过滤器裁剪树,返回只含满足条件节点的新树
NEFORCE_NODISCARD vector< pathall_paths () const
 收集树中所有路径
NEFORCE_NODISCARD vector< pathall_file_paths () const
 收集树中所有文件路径
NEFORCE_NODISCARD vector< pathall_dir_paths () const
 收集树中所有目录路径
NEFORCE_NODISCARD string to_string () const
 将树格式化为可读字符串
NEFORCE_NODISCARD string to_string (string_view indent) const
 将树格式化为可读字符串
Public 成员函数 继承自 istringify< path_tree >
NEFORCE_NODISCARD NEFORCE_CONSTEXPR20 string to_string () const
 转换为字符串

静态 Public 成员函数

static NEFORCE_NODISCARD path_tree scan (const path &root, const scan_options &options)
 从文件系统扫描构建路径树

详细描述

文件路径树

以树形结构表示文件系统中的目录层次。每个节点对应一个路径, 可包含子节点(子目录或文件)。支持:

  • 从文件系统扫描构建树
  • 手动构建树
  • 深度/广度优先遍历
  • 过滤器筛选节点
  • 路径查找
  • 树的合并与裁剪

在文件 path_tree.hpp36 行定义.

成员类型定义说明

◆ filter

using path_tree::filter = function<bool(const node&)>

节点过滤器类型

返回 true 表示节点通过过滤,false 表示被过滤掉。

在文件 path_tree.hpp163 行定义.

◆ visitor

节点访问回调类型

参数为当前节点引用,返回 visit_result 控制遍历行为。

在文件 path_tree.hpp156 行定义.

成员枚举类型说明

◆ node_type

enum class path_tree::node_type : uint8_t
strong

节点类型枚举

枚举值
unknown 

未知

directory 

目录

file 

普通文件

symlink 

符号链接

在文件 path_tree.hpp41 行定义.

◆ visit_result

enum class path_tree::visit_result : uint8_t
strong

遍历控制指令

枚举值
proceed 

继续遍历

skip 

跳过当前节点的子节点

stop 

终止整个遍历

在文件 path_tree.hpp51 行定义.

构造及析构函数说明

◆ path_tree()

path_tree::path_tree ( path root_path)
inlineexplicit

从路径构造树

参数
root_path根路径

在文件 path_tree.hpp211 行定义.

引用了 make_shared() , 以及 move().

成员函数说明

◆ all_dir_paths()

NEFORCE_NODISCARD vector< path > path_tree::all_dir_paths ( ) const

收集树中所有目录路径

返回
所有目录节点的路径列表

◆ all_file_paths()

NEFORCE_NODISCARD vector< path > path_tree::all_file_paths ( ) const

收集树中所有文件路径

返回
所有文件节点的路径列表

◆ all_paths()

NEFORCE_NODISCARD vector< path > path_tree::all_paths ( ) const

收集树中所有路径

返回
所有节点路径列表(深度优先顺序)

◆ find()

NEFORCE_NODISCARD node::ptr path_tree::find ( const path & p) const

通过绝对路径查找节点

参数
p要查找的路径
返回
找到的节点,未找到返回nullptr

◆ find_all()

NEFORCE_NODISCARD vector< node::ptr > path_tree::find_all ( string_view name) const

通过文件名查找所有匹配节点

参数
name文件名
返回
所有匹配节点的列表

引用了 name().

◆ find_by_extension()

NEFORCE_NODISCARD vector< node::ptr > path_tree::find_by_extension ( string_view ext) const

通过扩展名查找所有文件节点

参数
ext扩展名
返回
所有匹配的文件节点列表

◆ find_if()

NEFORCE_NODISCARD vector< node::ptr > path_tree::find_if ( const filter & f) const

通过过滤器查找所有匹配节点

参数
f过滤器
返回
所有满足条件的节点列表

◆ insert()

node::ptr path_tree::insert ( const path & p,
node_type type = node_type::file )

手动插入路径节点

参数
p要插入的路径(相对或绝对)
type节点类型
返回
插入的节点,如果路径已存在则返回已有节点

会自动创建路径中缺失的中间目录节点。

引用了 file.

◆ max_depth()

NEFORCE_NODISCARD size_t path_tree::max_depth ( ) const

获取树的最大深度

返回
最大深度

◆ merge()

void path_tree::merge ( const path_tree & other)

将另一棵树合并到当前树

参数
other要合并的树(根路径需与当前树兼容)

将other中的所有节点合并入当前树,重复节点不覆盖。

◆ prune()

NEFORCE_NODISCARD path_tree path_tree::prune ( const filter & f) const

按过滤器裁剪树,返回只含满足条件节点的新树

参数
f过滤器
返回
裁剪后的新树

若某目录下所有子节点均被过滤,该目录节点也被移除。

◆ remove()

bool path_tree::remove ( const path & p)

移除指定路径的节点及其子树

参数
p要移除的路径
返回
是否成功移除

◆ scan()

NEFORCE_NODISCARD path_tree path_tree::scan ( const path & root,
const scan_options & options )
static

从文件系统扫描构建路径树

参数
root扫描的根路径
options扫描选项
返回
构建好的路径树

递归扫描给定路径下的所有文件和目录, 根据选项进行过滤和深度控制。

引用了 root() , 以及 scan().

被这些函数引用 scan().

◆ size()

NEFORCE_NODISCARD size_t path_tree::size ( ) const

获取树中节点总数

返回
节点数量

◆ subtree()

NEFORCE_NODISCARD path_tree path_tree::subtree ( const path & p) const

获取以指定路径为根的子树

参数
p子树根路径
返回
子树

返回以p为根的独立路径树副本。

◆ to_string() [1/2]

NEFORCE_NODISCARD string path_tree::to_string ( ) const

将树格式化为可读字符串

返回
格式化后的字符串

◆ to_string() [2/2]

NEFORCE_NODISCARD string path_tree::to_string ( string_view indent) const

将树格式化为可读字符串

参数
indent每层缩进字符串,默认为两个空格
返回
格式化后的字符串

◆ traverse_bfs()

void path_tree::traverse_bfs ( const visitor & visitor) const

广度优先遍历

参数
visitor访问回调

◆ traverse_dfs()

void path_tree::traverse_dfs ( const visitor & visitor) const

深度优先遍历(前序)

参数
visitor访问回调

对树中每个节点调用visitor, 根据返回值控制遍历行为(proceed/skip/stop)。

◆ traverse_dirs()

void path_tree::traverse_dirs ( const visitor & visitor) const

仅遍历目录节点(深度优先)

参数
visitor访问回调

◆ traverse_files()

void path_tree::traverse_files ( const visitor & visitor) const

仅遍历文件节点(深度优先)

参数
visitor访问回调

该类的文档由以下文件生成: