用一种简单的方法遍历一个目录下的所有文件


以前都是用一些现成的方法遍历文件和目录,这次,偶然间发现了一种直接用api的方法,貌似Windows/Linux通用, 感觉如小李飞刀一般自如轻快,却不失威力。搬运过来供查阅。

以下内容转载自:https://www.cnblogs.com/collectionne/p/6815924.html 


#include <iostream>
#include <cstring>        // for strcpy(), strcat()
#include <io.h>

using namespace std;

void listFiles(const char * dir);

int main()
{
    char dir[200];
    cout << "Enter a directory: ";
    cin.getline(dir, 200);

    listFiles(dir);

    return 0;
}

void listFiles(const char * dir)
{
    char dirNew[200];
    strcpy(dirNew, dir);
    strcat(dirNew, "\\*.*");    // 在目录后面加上"\\*.*"进行第一次搜索

    intptr_t handle;
    _finddata_t findData;

    handle = _findfirst(dirNew, &findData);
    if (handle == -1)        // 检查是否成功
        return;

    do
    {
        if (findData.attrib & _A_SUBDIR)
        {
            if (strcmp(findData.name, ".") == 0 || strcmp(findData.name, "..") == 0)
                continue;

            cout << findData.name << "\t<dir>\n";

            // 在目录后面加上"\\"和搜索到的目录名进行下一次搜索
            strcpy(dirNew, dir);
            strcat(dirNew, "\\");
            strcat(dirNew, findData.name);

            listFiles(dirNew);
        }
        else
            cout << findData.name << "\t" << findData.size << " bytes.\n";
    } while (_findnext(handle, &findData) == 0);

    _findclose(handle);    // 关闭搜索句柄
}

猜你喜欢

转载自blog.csdn.net/Johnisjohn/article/details/88548993