21xrx.com
2024-09-20 00:43:17 Friday
登录
文章检索 我的文章 写文章
C++读取文件夹内所有文件的方法
2023-07-05 05:26:48 深夜i     --     --
C++ 读取 文件夹 所有文件 方法

在C++中,读取一个文件夹中的所有文件可以使用以下几种方法:

方法一:使用Windows API

Windows API提供了许多与文件系统相关的函数,我们可以使用FindFirstFile和FindNextFile函数来遍历文件夹中的所有文件:


#include <windows.h>

#include <iostream>

int main()

{

  HANDLE dir;

  WIN32_FIND_DATA file_data;

  if ((dir = FindFirstFile("C:\\Path\\To\\Folder\\*", &file_data)) == INVALID_HANDLE_VALUE)

    return 1; /* No files found */

  do {

    const std::string file_name = file_data.cFileName;

    const bool is_directory = (file_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0;

    if (file_name[0] == '.')

      continue;

    if (is_directory)

      continue;

    std::cout << file_name << std::endl;

  } while (FindNextFile(dir, &file_data));

  FindClose(dir);

  return 0;

}

该代码使用了HANDLE、WIN32_FIND_DATA和FindFirstFile等Windows API相关函数,以便遍历文件夹中的所有文件。

方法二:使用boost库

boost库是一个跨平台的C++库,提供了许多常用的开发工具。其中boost::filesystem库可以用于处理文件和文件夹,使用该库可以非常方便地读取一个文件夹中的所有文件:


#include <iostream>

#include <boost/filesystem.hpp>

int main()

{

  std::string directory = "C:\\Path\\To\\Folder\\";

  try {

    for (boost::filesystem::directory_iterator iter(directory), end_iter; iter != end_iter; ++iter) {

      if (boost::filesystem::is_regular_file(iter->status()))

        std::cout << iter->path().filename().string() << std::endl;

    }

  }

  catch (const boost::filesystem::filesystem_error& ex) {

    std::cout << ex.what() << std::endl;

  }

  return 0;

}

该代码使用了boost::filesystem库提供的directory_iterator和is_regular_file等函数,可以轻松地读取指定文件夹中的所有文件。

以上两种方法都可以很好地帮助我们读取文件夹中的所有文件,使用时根据自己的需要选择即可。

  
  

评论区

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