c_cpp 文件管理,用于获取某一目录下的所有文件名称等.FileBrower用于获取文件夹下的名称列表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 文件管理,用于获取某一目录下的所有文件名称等.FileBrower用于获取文件夹下的名称列表相关的知识,希望对你有一定的参考价值。
/*!
* @file FileBrower.h
* @brief C++ header for the get the list of names under a folder
* @author Qingfeng.Li
* copyright reserved 2014, please do not remove this head
*/
#ifndef _CPPLIB_FILEBROWER_H_
#define _CPPLIB_FILEBROWER_H_
#include <vector>
#include <string>
/**
* @class FileBrower
*
* @brief 用于封装关于目录及文件的一些基本操作
*/
class FileBrower
{
public:
/**
* @brief 获取当前的工作目录
*
* @return 当前工作目录
*/
static std::string getcwd();
/**
* @brief 获取当前目录下所有目录的名称(注意包含了"."与"..",磁盘根目录除外)
*
* @param[out] floderList 返回目录序列
* @return 返回是否成功
*/
static bool getFolderList(std::vector<std::string> &folderList);
/**
* @brief 获取当前目录下所有文件的名称
*
* @param[out] fileList 当前目录下所有的文件名称序列
* @return 是否获取成功
*/
static bool getFileList(std::vector<std::string> &fileList);
/**
* @brief 获取当前目录下所有目录以及文件的名称(注意包含了"."与"..",磁盘根目录除外)
*
* @param[out] allList 当前目录下所有目录以及文件的名称
* @return 返回是否获取成功
*/
static bool getNameList(std::vector<std::string> &allList);
/**
* @brief 改变当前的工作目录
*
* @param[in] dir 需要改变到的工作目录
* @return 返回是否改变成功
*/
static bool chdir(const std::string &dir);
/**
* @brief 递归的获取该目录下的所有文件名称
* @param[out] fileList 当前目录下所有的文件名称序列(包括子目录中的文件名称,但注意不包含目录名)
* @return 是否获取成功
*/
static bool getFileListRecursion(std::vector<std::string> &fileList);
};
#endif // _CPPLIB_FILEBROWER_H_
#include "FileBrower.h"
#include <io.h>
#include <direct.h>
std::string FileBrower::getcwd()
{
char cwd[_MAX_PATH];
_getcwd(cwd, _MAX_PATH);
return cwd;
}
bool FileBrower::getFolderList(std::vector<std::string> &folderList)
{
_finddata_t filedata;
intptr_t findHandle;
findHandle = _findfirst("*", &filedata);
if (findHandle == -1)
{
return false;//没有寻找到,直接返回
}
do
{
//判断是否是目录
if (filedata.attrib & _A_SUBDIR)
{
folderList.push_back(filedata.name);
}
} while (0 == _findnext(findHandle, &filedata));
_findclose(findHandle);
return true;
}
bool FileBrower::getFileList(std::vector<std::string> &fileList)
{
_finddata_t filedata;
intptr_t findHandle;
findHandle = _findfirst("*", &filedata);
if (findHandle == -1)
{
return false;//没有寻找到,直接返回
}
do
{
//判断是否为目录
if (!(filedata.attrib & _A_SUBDIR))
{
fileList.push_back(filedata.name);
}
} while (0 == _findnext(findHandle, &filedata));
_findclose(findHandle);
return true;
}
bool FileBrower::getNameList(std::vector<std::string> & allList)
{
_finddata_t filedata;
intptr_t findHandle;
findHandle = _findfirst("*", &filedata);
if (findHandle == -1)
{
return false;//没有寻找到,直接返回
}
do
{
allList.push_back(filedata.name);
} while (0 == _findnext(findHandle, &filedata));
_findclose(findHandle);
return true;
}
bool FileBrower::chdir(const std::string & dir)
{
return _chdir(dir.c_str()) == 0 ? true : false;
}
bool FileBrower::getFileListRecursion(std::vector<std::string> & fileList)
{
//获取这个路径下的所有目录及文件名称
_finddata_t filedata;
intptr_t findHandle;
findHandle = _findfirst("*", &filedata);
if (findHandle == -1)
{
return false;//没有寻找到,直接返回
}
do
{
//判断是否是目录
if (filedata.attrib & _A_SUBDIR)
{
//dir.push_back(filedata.name);
if (strcmp(filedata.name, ".") && strcmp(filedata.name, ".."))
{
if (0 == _chdir(filedata.name))//打开成功
{
getFileListRecursion(fileList); //递归调用
_chdir("..");
}
}
}
else
{
fileList.push_back(filedata.name);
}
} while (0 == _findnext(findHandle, &filedata));
_findclose(findHandle);
return true;
}
以上是关于c_cpp 文件管理,用于获取某一目录下的所有文件名称等.FileBrower用于获取文件夹下的名称列表的主要内容,如果未能解决你的问题,请参考以下文章
计算某一路径下的所有目录或是文件数量
如何将hdfs里某一目录下的所有文件的文件名读取出来
用python读取一个文件夹下的所有CSV文件里某一列数据中最大值,将此最大值所在行截取到新CSV文件中?
C语言怎么读取某一文件夹下的所有文件夹和文件?
文件权限的获取,cmd命令:Takeown
Linux常用磁盘管理命令详解