| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4025 人关注过本帖, 2 人收藏
标题:小鱼儿 遍历指点目录下的所有目录中的文件 +扫描当前目录所有文件
取消只看楼主 加入收藏
小鱼儿c
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:852
专家分:1317
注 册:2011-4-1
结帖率:95.74%
收藏(2)
 问题点数:0 回复次数:1 
小鱼儿 遍历指点目录下的所有目录中的文件 +扫描当前目录所有文件
因为自己发现文件操作,很多时候都会扫描当前文档。 或者扫描子目录。
这个以前就写过,今天自己好好的重写了一面,也写了注释。
用了几个API 而已
FindFirstFile 和 FindNextFile 其实c语言里面也有这个函数。

下面是遍历指点目录的所有文件指定类型文件 包括子目录。

如果想要变量全盘也好写。

只要
for(char i='c';i<'z';i++)
{

UINT Type=GetDriveType(i);
if(Type==DRIVE_FIXED||Type==DRIVE_REMOVABLE)//取硬盘和移动磁盘
{
//调用函数
}

}
程序代码:
#include "StdAfx.h"
#include "FindFile.h"

//这里只是测试函数
//一般我们遍历文件都是有目的 同这个写类似病毒一些东西
void Test(WIN32_FIND_DATA *fd)
{
    MessageBox(0,fd->cFileName,0,0);
}

BOOL FindFile(char *pFileName, char * FindFileType)
{
    WIN32_FIND_DATA fd;
    HANDLE hFind;
    char Type[10]={0};
    sprintf(Type,".%s",FindFileType);
    //HANDLE hFindType;//查找对应文件类型
    char FileName[260]={0};

    sprintf(FileName,"%s\\*.*",pFileName);
    ZeroMemory(&fd,sizeof(fd));

    if(0 == strlen(FileName))
    {
        MessageBox(0,"文件名不能为空",0,0);
        return FALSE;
    }
    else
    {
       hFind = FindFirstFile(FileName,&fd);
       if(INVALID_HANDLE_VALUE==hFind)
       {
           return FALSE;
       }
       else
       {
            do 
            {
                //查找文件名字中有没与 .文件后缀  注意要加点 因为点在文件名字是特殊符号
                //一般是不可以用的。但可以用特殊方法来添加。
                //U 盘免疫就是用这中方法来 来建立一个不能用普通方法删除autorun.inf的文件夹 
                if(strstr(fd.cFileName,Type))
                {
                    Test(&fd);
                }
                else
                {
                    //当该文档是文件时候进行下列操作
                     if(fd.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)
                     {
                         //除掉 . 表示当前目录 和..上一个目录 这个在dos 中可以看到
                         if(strcmp(fd.cFileName,".")!=0&&strcmp(fd.cFileName,"..")!=0)
                         {
                             char Temp[256]={0};
                             sprintf(Temp,"%s\\%s",pFileName,fd.cFileName);
                             FindFile(Temp,FindFileType);

                         }
                        
                     }
                }
                
//继续查找下一个文件
            } while (FindNextFile(hFind,&fd));
       }
    }
    return TRUE;
}


只扫描指定目录的文件不包括子目录
程序代码:
#include "StdAfx.h"
#include "FindFiled.h"


BOOL bFind(char *pFileName,char *FileType,pFun FileOpre)
{
    bool bisFinish = FALSE;
    WIN32_FIND_DATA fd; // data buffer

    char FileName[260]={0};
    HANDLE hFind;

    strcpy(FileName,pFileName);
    ZeroMemory(&fd,sizeof(fd));
    strcat(FileName,"\\\\*.");
    strcat(FileName,FileType);

    if(0==strlen(FileName))
    {
        MessageBox(0,"没有输入文件名",0,0);
        return FALSE;
    }
    else
    {
        hFind = FindFirstFile(FileName,&fd);

        if(INVALID_HANDLE_VALUE == hFind)
        {
            return FALSE;
        }
    else
    {
        do 
        {
            // . 表示当前目录  .. 表示上级目录 所以没有用
            if(strcmp(fd.cFileName,".")!=0||strcmp(fd.cFileName,"..")!=0)
            {
                //MessageBox(0,fd.cFileName,"文件名",0);
                FileOpre(&fd);//函数调用函数 其实用函数
            }
            
        } while (FindNextFile(hFind,&fd));
    }
    }

    CloseHandle(hFind);
    return FALSE;
}
搜索更多相关主题的帖子: 目录 c语言 小鱼儿 
2012-01-05 00:45
小鱼儿c
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:852
专家分:1317
注 册:2011-4-1
收藏
得分:0 
以下是引用hahayezhe在2012-1-5 17:31:20的发言:

这个不算什么,配合UI写个文件夹管理工具吧

贴这些代码,我根本没有任何意思。
只是想鼓励自己好好写代码。
并不是自满的表现。。。。。。。。。
一个自学也是挺痛苦的,什么都不能和别人分享。。。


不懂UI  你是用写一个window界面吗,我看还是没有必要了。现在我要多花时间学一些有用的东西。。。
菜鸟 之路 很长远啊。

用心做一件事情就这么简单
2012-01-05 18:04
快速回复:小鱼儿 遍历指点目录下的所有目录中的文件 +扫描当前目录所有文件
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017999 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved