曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 3276|回复: 0
打印 上一主题 下一主题

递归遍历目录

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34397
跳转到指定楼层
楼主
发表于 2012-2-16 15:57:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面程序使用递归遍历目录树:

[C++] 纯文本查看 复制代码
#include "stdafx.h"

DWORD TraverDir (LPTSTR szPath)
{
    setlocale(LC_ALL, "chs");

    WIN32_FIND_DATA FindFileData;
    HANDLE hListFile;

    TCHAR szFilePath[MAX_PATH];
    TCHAR szFullPath[MAX_PATH];

    ZeroMemory(szFilePath, MAX_PATH);
    ZeroMemory(szFullPath, MAX_PATH);

    lstrcpy (szFilePath, szPath);

    lstrcat (szFilePath, TEXT("\\*"));

    hListFile = FindFirstFile (szFilePath, &FindFileData);

    if (hListFile == INVALID_HANDLE_VALUE) {
        _tprintf (TEXT("错误:%d"), GetLastError());
        return 1;
    } else {

        do {
            //略过 . 和 .. 目录
            if (lstrcmp(FindFileData.cFileName, TEXT(".")) == 0 ||
                lstrcmp(FindFileData.cFileName, TEXT("..")) == 0) { continue; }

            //构造全路径
            wsprintf (szFullPath, TEXT("%s\\%s"), szPath, FindFileData.cFileName);
            _tprintf (TEXT("\n%s\t"), szFullPath);

            if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
                _tprintf (TEXT("<DIR>"));
                TraverDir (szFullPath);
            }

            _tprintf (TEXT("\n"));
        } while (FindNextFile(hListFile, &FindFileData));
    }
}
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "chs");

    if (argc == 2) {
        TraverDir(argv[1]);
    } else {
        TCHAR szCurrentPath[MAX_PATH];
        GetCurrentDirectory(MAX_PATH, szCurrentPath);
        TraverDir(szCurrentPath);
    }

    return 0;
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-6-17 17:59 , Processed in 0.097444 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表