下面是一个对于C++实现读取特定路径下文件夹及文件名的方法的完整攻略。
1. 获取目录下所有的文件和目录
首先,需要使用 C++ 的标准库中的 dirent.h
头文件,该头文件中定义了与获取目录有关的函数。我们可以通过调用该头文件中的 opendir
、readdir
和 closedir
函数来获取特定路径下的所有文件和目录。
具体代码如下所示,该代码可以将 Windows 系统下指定路径(如 C:\Users\username\Desktop
)下的所有文件和目录名打印出来:
#include <iostream>
#include <dirent.h> // dirent.h 头文件
using namespace std;
int main()
{
// 打开指定路径
DIR *dir = opendir("C:\\Users\\username\\Desktop");
// 如果打开失败,输出错误信息并退出
if (!dir)
{
cout << "Failed to open directory." << endl;
return 1;
}
// 读取目录中的所有文件和目录
struct dirent *entry;
while ((entry = readdir(dir)) != nullptr)
{
cout << entry->d_name << endl;
}
// 关闭目录
closedir(dir);
return 0;
}
2. 筛选特定后缀名的文件
如果只需要获取特定后缀名的文件,可以通过在第一步的基础上添加一些判断语句来实现。例如,如果要获取指定路径下所有的 txt
文件,可以使用如下代码:
#include <iostream>
#include <string.h> // strcmp 和 strrchr 需要使用 string.h 头文件
#include <dirent.h>
using namespace std;
int main()
{
// 打开指定路径
DIR *dir = opendir("C:\\Users\\username\\Desktop");
// 如果打开失败,输出错误信息并退出
if (!dir)
{
cout << "Failed to open directory." << endl;
return 1;
}
// 读取目录中的所有文件和目录
struct dirent *entry;
while ((entry = readdir(dir)) != nullptr)
{
// 如果是文件夹或者是"."或者"..",则跳过
if (entry->d_type == DT_DIR || strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0)
{
continue;
}
// 获取文件后缀名
char *dot = strrchr(entry->d_name, '.');
if (dot && strcmp(dot, ".txt") == 0)
{
// 如果是 .txt 文件,则打印文件名
cout << entry->d_name << endl;
}
}
// 关闭目录
closedir(dir);
return 0;
}
在上面这个示例中,我们首先判断文件是否是文件夹或者是.
或者..
,然后使用 strrchr
从文件名中获取最后一个.
的位置,以此来判断文件后缀名是否为 .txt
。
这就是C++实现读取特定路径下文件夹及文件名的方法的完整攻略了。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++实现读取特定路径下文件夹及文件名的方法 - Python技术站