21xrx.com
2024-12-22 20:47:31 Sunday
登录
文章检索 我的文章 写文章
C++读取文件夹的方法
2023-07-09 02:17:24 深夜i     --     --
C++ 读取 文件夹 方法 文件操作

随着技术的不断发展,计算机编程日益成为人们生活中不可缺少的一部分。在编程领域中,读取文件夹是一项基本但又十分重要的操作。在C++中,可以使用一些方法来读取文件夹,本文将介绍其中两种方法。

方法一:使用dirent.h头文件

dirent.h是C语言提供的一个标准库,可以在C++中使用。它包含了对目录和目录项的描述的结构体类型、目录和文件操纵函数等一系列函数。

以下是使用dirent.h头文件读取文件夹的示例代码:


#include <dirent.h> //dirent.h头文件 

#include <iostream> 

using namespace std; 

 

int main(){ 

  DIR *dir;      //目录指针 

  struct dirent *entry;  //目录项声明 

  dir = opendir(".");    //打开目录,使用当前目录(".") 

  while((entry=readdir(dir))!=NULL)  //循环读取目录项 

    cout << entry->d_name << endl;  //打印目录项名称 

   

  closedir(dir);  //关闭目录 

  return 0; 

该代码通过使用opendir()函数打开当前目录,使用readdir()函数读取当前目录下的文件夹和文件,使用closedir()函数关闭当前目录。

方法二:使用Windows API函数

Windows API是Windows系统提供的一组函数,可以使用C++编写。使用其中的一些函数可以在Windows环境下更方便地读取文件夹。

以下是使用Windows API函数读取文件夹的示例代码:


#include <windows.h>   //Windows API头文件 

#include <iostream> 

using namespace std; 

 

int main(){ 

  WIN32_FIND_DATAA FindData;  //文件属性结构体声明 

  HANDLE hFind = ::FindFirstFileA("*.*", &FindData);  //查找第一个文件 

  if (hFind != INVALID_HANDLE_VALUE) {  //判断是否查找成功 

    do { 

      if (FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY){  //判断是否为文件夹 

        cout << "[DIR] " << FindData.cFileName << endl;    //是文件夹则打印 

      } 

      else{ 

        cout << "[FILE] " << FindData.cFileName << endl;  //否则打印文件名称 

      } 

    } while (::FindNextFileA(hFind, &FindData));  //循环查找下一个文件 

  } 

  ::FindClose(hFind);    //关闭查找句柄 

  return 0; 

该代码通过使用Windows API函数FindFirstFileA()查找第一个文件,使用FindNextFileA()函数循环查找下一个文件,使用FindClose()函数关闭查找句柄。

结论

通过以上两种方法中的任意一种都可以读取文件夹,并获取文件夹中包含的所有文件和目录。在编写代码时,需要根据需求进行选择,合理使用函数来完成操作。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复