acl  3.5.3.0
acl::scan_dir类 参考

#include <scan_dir.hpp>

+ 类 acl::scan_dir 继承关系图:
+ acl::scan_dir 的协作图:

Public 成员函数

 scan_dir (void)
 
virtual ~scan_dir (void)
 
bool open (const char *path, bool recursive=true, bool rmdir_on=false)
 
virtual bool rmdir_callback (const char *path)
 
void close (void)
 
const char * next_file (bool full=false)
 
const char * next_dir (bool full=false)
 
const char * next (bool full=false, bool *is_file=NULL)
 
const char * curr_path ()
 
const char * curr_file (bool full=false)
 
size_t dir_count () const
 
size_t file_count () const
 
unsigned long long scaned_size () const
 
unsigned long long all_size (int *nfiles=NULL, int *ndirs=NULL) const
 
unsigned long long remove_all (int *nfiles=NULL, int *ndirs=NULL) const
 
ACL_SCAN_DIRget_scan_dir (void) const
 
void set_rmdir_callback (int(*fn)(ACL_SCAN_DIR *, const char *, void *), void *ctx)
 

静态 Public 成员函数

static unsigned long long all_size (const char *path, bool recursive=true, int *nfiles=NULL, int *ndirs=NULL)
 
static unsigned long long remove_all (const char *path, bool recursive=true, int *nfiles=NULL, int *ndirs=NULL)
 
static bool get_cwd (string &out)
 

额外继承的成员函数

- Protected 成员函数 继承自 acl::acl::noncopyable
 noncopyable ()
 
 ~noncopyable ()
 

详细描述

在文件 scan_dir.hpp11 行定义.

构造及析构函数说明

◆ scan_dir()

acl::scan_dir::scan_dir ( void  )

◆ ~scan_dir()

virtual acl::scan_dir::~scan_dir ( void  )
virtual

成员函数说明

◆ all_size() [1/2]

unsigned long long acl::scan_dir::all_size ( int *  nfiles = NULL,
int *  ndirs = NULL 
) const

◆ all_size() [2/2]

static unsigned long long acl::scan_dir::all_size ( const char *  path,
bool  recursive = true,
int *  nfiles = NULL,
int *  ndirs = NULL 
)
static

◆ close()

void acl::scan_dir::close ( void  )

关闭目录,同时释放内部资源

◆ curr_file()

const char* acl::scan_dir::curr_file ( bool  full = false)

获得当前程序扫描过程所扫到的文件名

参数
full{bool} 是否需要同时返回文件全路径
返回
{bool} 如果目录未找开或当前扫描的不是文件,则返回 NULL

◆ curr_path()

const char* acl::scan_dir::curr_path ( )

获得当前扫描过程所在的目录路径,返回的路径尾部不包含路径分隔符 '/' 或 '\' (win32),如对于路径:/home/zsx/,则会返回 /home/zsx,如果 路径为根路径:/ 则该 '/' 将会保留;在 _WIN32 下,返回类似于 C:\Users\zsx 的路径

返回
{const char*} 当目录打开时该函数返回非空指针,否则返回 NULL

◆ dir_count()

size_t acl::scan_dir::dir_count ( ) const

返回当前已经扫描的目录的个数

返回
{size_t}

◆ file_count()

size_t acl::scan_dir::file_count ( ) const

返回当前已经扫描的文件的个数

返回
{size_t}

◆ get_cwd()

static bool acl::scan_dir::get_cwd ( string out)
static

获得当前程序运行的路径

参数
out{string&} 存储结果
返回
{bool} 是否成功获得当前程序运行路径

◆ get_scan_dir()

ACL_SCAN_DIR* acl::scan_dir::get_scan_dir ( void  ) const
inline

在文件 scan_dir.hpp160 行定义.

161  {
162  return scan_;
163  }

◆ next()

const char* acl::scan_dir::next ( bool  full = false,
bool *  is_file = NULL 
)

扫描下一个目录或文件,当在 open 指定了允许递归扫描项(即 resursive = true),则该函数会递归扫描所打开目录的所有子目录及文件

参数
full{bool} 是否需要返回目录或文件的全路径,如果为 true 则返 回全路径,否则只返回文件名或目录名且都不含路径
is_file{bool*} 当返回结果非空时,该地址存储的值表示所扫描到 的是否是文件,如果为 true 则为文件,否则为目录
返回
{const char*} 非 NULL 表示所扫描到的目录名或文件名,否则表 示扫描完毕或目录还未打开

◆ next_dir()

const char* acl::scan_dir::next_dir ( bool  full = false)

扫描下一个目录(遇到文件或 "." 或 ".." 会跳过),当在 open 指定允许了 允许递归扫描项(即 recursive = true),则该函数会递归扫描所开目录的所 有子目录

参数
full{bool} 是否需要返回目录全路径
返回
{const char*} 非 NULL 表示所扫描到的目录名,否则表示扫描完 毕或目录还未打开

◆ next_file()

const char* acl::scan_dir::next_file ( bool  full = false)

扫描下一个文件(遇到目录会自动跳过),当在 open 指定了允许递归扫描选项 (即 recursive = true),则该函数会递归扫描所打开目录的所有子目录

参数
full{bool} 是否需要返回文件全路径
返回
{const char*} 非 NULL 表示所扫描到的文件名,否则表示扫描完毕 或目录还未打开

◆ open()

bool acl::scan_dir::open ( const char *  path,
bool  recursive = true,
bool  rmdir_on = false 
)

打开目录

参数
path{const char*} 目录路径,非空指针
recursive{bool} 是否允许递归扫描目录
rmdir_on{bool} 当目录为空时,是否需要删除该空目录
返回
{bool} 打开目录是否成功

◆ remove_all() [1/2]

unsigned long long acl::scan_dir::remove_all ( int *  nfiles = NULL,
int *  ndirs = NULL 
) const

◆ remove_all() [2/2]

static unsigned long long acl::scan_dir::remove_all ( const char *  path,
bool  recursive = true,
int *  nfiles = NULL,
int *  ndirs = NULL 
)
static

◆ rmdir_callback()

virtual bool acl::scan_dir::rmdir_callback ( const char *  path)
virtual

虚方法,当需要删除空目录时,子类可以实现此虚方法来删除传入的目录, 本虚方法内部会自动调用 rmdir 删除空目录

参数
path{const char*} 需要被删除的空目录
返回
{bool} 删除目录是否成功

◆ scaned_size()

unsigned long long acl::scan_dir::scaned_size ( ) const

◆ set_rmdir_callback()

void acl::scan_dir::set_rmdir_callback ( int(*)(ACL_SCAN_DIR *, const char *, void *)  fn,
void *  ctx 
)

设置回调方法,用来删除空目录

参数
fn{int (*)(ACL_SCAN_DIR*, const char*, void*)}
ctx{void*}

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