C++ 遍历目录所有文件并判断是否为目录

1. 思路

  使用FindFirstFile、FindNextFile函数,来遍历目录。结果保存在WIN32_FIND_DATA结构体中。将查询结果的dwFileAttributes和FILE_ATTRIBUTE_DIRECTORY取与操作,判断是否为目录。


2. 示例代码

#include <iostream>
#include <stdio.h>
#include <windows.h>

using namespace std;

int main()
{
    HANDLE hRes;
    WIN32_FIND_DATA data;
    LPCSTR IpFileName;
    char tmpDir[MAX_PATH] = "";

    strcat(tmpDir,"E:\\ubuntuShare");
    strcat(tmpDir,"\\*");
    IpFileName = tmpDir;

    hRes = FindFirstFileEx(IpFileName,FindExInfoStandard,&data,FindExSearchNameMatch,NULL,0);

    while(FindNextFile(hRes,&data))
    {
        if(strcmp(data.cFileName,".") ==0 || strcmp(data.cFileName,"..") == 0)
            continue;

        if (data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
        {
            printf("%s 是目录.\n",data.cFileName);
        }
        else
        {
            printf("%s 是文件.\n",data.cFileName);
        }
    }

    return 0;
}
时间: 2024-10-25 18:06:51

C++ 遍历目录所有文件并判断是否为目录的相关文章

Linux命令-cp 把整个目录下文件复制到另一个目录

在linux服务器上想把一个文件的文件全部复制到另一个文件夹时,同时该文件夹下的文件较多无法进行单个文件的移动时,就要用cp命令 cp命令格式 cp  -r 源目录/* 指定目录 cp命令是复制; -r 是递归把源目录下的目录递归进行移动; 源目录/* 中*代表源目录下的文件和文件夹; 指定目录就是你要移动到的文件夹路径 例子 cp -r  /tmp/WEB-INF/cert/* /home/jboss/deploy/cert 原文地址:https://www.cnblogs.com/bashl

HDFS 读取、写入、遍历目录获取文件全路径

1.从HDFS中读取数据 Configuration conf = getConf(); Path path = new Path(pathstr); FileSystem fs = FileSystem.get(conf); FSDataInputStream fsin= fs.open(path ); BufferedReader br =null; String line ; try{ br = new BufferedReader(new InputStreamReader(fsin))

多线程的对比与案例(计算目录下文件的大小)

本人使用的是mac 所以有usr目录.把以下的几种情况分别贴出来给大家分析下各自有什么优缺点! 1.顺序计算目录大小code: package jvm; import java.io.File; /** * 第一版 * 顺序计算目录大小 * @author zeuskingzb * */ public class TotalFileSizeSequential { private long getTotalSizeOfFilesInDir(File file){ if (file.isFile(

活动目录数据库文件介绍

活动目录中的数据库文件的介绍 活动目录数据库包含大量的核心基础数据,应该妥善保护,及时备份.活动目录数据库是"dit"格式的数据库,和Exchange Server使用的数据库格式相同.在维护活动目录数据库前,只要停止ADDS域服务即可维护数据库. Active Directory数据库是一个事务处理数据库系统,通过日志文件支持回滚操作,从而确保事务提到数据库中.与Active Directory关联的文件包括: Ntds.dit,Active Directory数据库文件 Edbxx

linux基础命令学习(五)目录或文件权限

一.查看文件的详情 ls -al 二.改变目录或文件的权限 chmod [-cfvR] [--help] [--version] mode file 1. 必要参数 -c 当发生改变时,报告处理信息  -f 错误信息不输出 -R 处理指定目录以及其子目录下的所有文件             -v 运行时显示详细处理信息 2.选择参数  --reference=<目录或者文件> 设置成具有指定目录或者文件具有相同的权限  --version 显示版本信息 <权限范围>+<权限设

目录与文件处理命令

显示目录与文件 命令名称:ls 命令英文原意:list 命令所在路径:/bin/ls 执行权限:所有用户 功能描述:显示目录文件 语法:ls 选项[-ald] [文件或目录] -a 显示所有文件,包括隐藏文件 -l 详细信息显示 -d 查看目录属性 u g o:u所有者 g所属组 o其他人 r w x:r读 w写 x执行 目录与文件处理命令 创建新目录:mkdir 命令名称:mkdir 命令英文原意:make directories 命令所在路径:/bin/mkdir 执行权限:所有用户 语法:

一个diff工具,用于判断两个目录下所有的改动(比较新旧版本文件夹)

需求: 编写一个diff工具,用于判断两个目录下所有的改动 详细介绍: 有A和B两个目录,目录所在位置及层级均不确定 需要以B为基准找出两个目录中所有有改动的文件(文件或内容增加.修改.删除),将有改动的文件放入第三个目录中,层级结构与原目录相同 将所有新增与更新信息记录到更新日志文件中 将删除信息单独记录到删除日志文件中 每次执行diff工具需要生成一个新的以日期命名的目录存放文件 使用场景: 本工具用于软件版本升级时找出两个版本间所有修改过的文件,便于增量替换. 提示:    使用CRC判断

【原】linux系统中,执行nosetests无法遍历以“test”开头的目录或文件的问题

最近在centos下面安装使用了nose,发现了一个问题:在命令行中执行nosetests无法遍历该目录下面以“test”开头的目录或者文件并执行文件中的测试. 1 # nosetests -v 2 3 ---------------------------------------------------------------------- 4 Ran 0 tests in 0.000s 5 6 OK 而在windows下面是可以的: 1 nosetests -v 2 here ... ok

PHP 支持中文目录和文件的的遍历

在使用 readdir() 遍历指定目录时,使中文目录和文件名都正常显示需要使用 iconv() 进行文件编码转换: 1 <?php 2 3 header("Content-type:text/html;charset=utf-8"); 4 5 $num = 0; 6 $dirname = 'practise'; 7 8 $dirname = iconv( 'utf-8', 'gb2312',$dirname ); 9 10 $dir_handle = opendir($dirn