当前位置:  技术问答>linux和unix

c 语言怎样获取一个文件夹下的所有文件名和文件?

    来源: 互联网  发布时间:2016-10-14

    本文导语:  c 语言怎样获取一个文件夹下的所有文件名和文件? 然后递归打开每一个文件名,如果是文件夹,就继续向下打开,继续获取文件夹和文件名。。 | #include  #include   #define FILEILTER "*.*" BOOL IsRoot(LPCTSTR lpszPath)...

c 语言怎样获取一个文件夹下的所有文件名和文件?

然后递归打开每一个文件名,如果是文件夹,就继续向下打开,继续获取文件夹和文件名。。


|

#include 
#include  
#define FILEILTER "*.*"

BOOL IsRoot(LPCTSTR lpszPath) 

    TCHAR szRoot[4]; 
    wsprintf(szRoot, "%c:\", lpszPath[0]); 
    return (lstrcmp(szRoot, lpszPath) == 0); 


                    
void FindInAll(LPCTSTR lpszPath) 
{
    TCHAR szFind[MAX_PATH]; 
    lstrcpy(szFind, lpszPath); 
    if (!IsRoot(szFind)) 
        lstrcat(szFind, "\"); 
    lstrcat(szFind, FILEILTER); // 找所有文件 
    WIN32_FIND_DATA wfd; 
    HANDLE hFind = FindFirstFile(szFind, &wfd); 
    if (hFind == INVALID_HANDLE_VALUE) // 如果没有找到或查找失败 
        return; 
    
    do 
    { 
        if (wfd.cFileName[0] == '.') 
            continue; // 过滤这两个目录 
        if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) 
        { 
            TCHAR szFile[MAX_PATH]; 
            if (IsRoot(lpszPath)) 
                wsprintf(szFile, "%s%s", lpszPath, wfd.cFileName); 
            else 
            {
                wsprintf(szFile, "%s\%s", lpszPath, wfd.cFileName); 
                FindInAll(szFile); // 如果找到的是目录,则进入此目录进行递归 
            }
        } 
        else 
        { 
            TCHAR szFile[MAX_PATH]; 
            if (IsRoot(lpszPath)) 
            {
                wsprintf(szFile, "%s%s", lpszPath, wfd.cFileName); 
            }
            else 
            {
                wsprintf(szFile, "%s\%s", lpszPath, wfd.cFileName);
                printf("%sn",szFile);
            }
            // 对文件进行操作 
        } 
    } while (FindNextFile(hFind, &wfd)); 
    FindClose(hFind); // 关闭查找句柄 
    

int main(int argc, char* argv[]) 

    char findFile[64]="d:";//要查找的目录
    FindInAll(findFile);
    getchar();
    return 0; 


|
基本上需要操作系统的支持或者说至少不同操作系统实现肯定不同,
单纯的c库api不可能实现的
比如楼上的代码不能拿到linux:)

|



对文件夹处理确实要加递归的。。。

|
mark
MFC我做过的,C语言不知道呢~关注!!

|
ls应该加一个递归,如果是文件夹的

    
 
 

您可能感兴趣的文章:

  • c语言文件读写示例(c语言文件操作)
  • 在VC下如果要打开其它语言命名的文件读行二进制读取可以用TCHAR来定义文件名,读写函数他自己会自动选择,现在要换到LINUX下(UBUNTU)下开发,如果有多种语言命名的文件,我应该用什么类型来存放文件名?
  • C语言当中的FCB文件控制块包含在哪个头文件?
  • linux下用c语言如何在不知道文件名的情况下读去一个目录里的所有文件?
  • 如何在c语言里修改linux下文件的权限为可执行?
  • 求《UNIX平台下C语言高级编程指南》这本书的光盘中的Chap1.WDL文件(我的光盘中的这个文件坏了,书也丢了。。。)
  • 用JAVA语言怎样知道一个目录下的文件数目?
  • 为什么我的浏览器不能观看带有JAVASCRIPT语言的HTML文件
  • 请问ubuntu自动更新的语言包放到那个文件夹下
  • Linux下C语言读写文件问题,在线等待
  • C 语言中 怎么读配置文件
  • 用C语言如何对img文件进行操作
  • c语言如何指定某文件对于某用户可删除?
  • C语言编程——操作系统中的文件管理!
  • Linux脚本语言修改文件里的内容
  • CSDN的诸位高手们,请问在LINUX下,用那条命令可以编译C语言的原文件,在线等待:)
  • 请问:linux下C语言怎样识别一个目录文件?
  • 提问,unix下C语言如何调用xml文件,不够再加分
  • C语言下,如何识别键盘输入和文件输入?
  • 请问fedora 9的语言设置文件在那个地方哇急俄
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux下C语言如何实现获得文件夹的大小?
  • 如何用C语言在./目录下新建一个文件夹?
  • C语言实现的统计php代码行数功能源码(支持文件夹、多目录)
  • 2013年7月和2013年8月编程语言排行榜
  • 如何在GTK2.0下实现国际化(语言选择根据自己设置的语言,不用系统的语言)
  • 2017 年热门编程语言排行榜出炉,你的语言上榜没?
  • C语言中有指针,因此C语言可以创建链表,那么Java语言没有指针,那Java是否可以创建链表呢?
  • 苹果OS X和IOS下最新编程语言swift介绍
  • 求助,在linux下,c语言和汇编语言的接口是什么?
  • c语言判断某一年是否为闰年的各种实现程序代码
  • C语言中间语言 CIL
  • PHP编程语言介绍及安装测试方法
  • 最近学JSP,苦于HTML语言和JAVA语言太差,请教推荐几本书,thanks.
  • Linux下C语言strstr()查找子字符串位置函数详细介绍(strstr原型、实现及用法)
  • 动态编程语言 LIME编程语言
  • c语言实现MD5算法完整代码示例
  • C语言如何改变当前语言环境
  • 以NetBeans IDE为例介绍如何使用XML中Schema语言
  • 如何在VIM中使汇编语言和C语言自动缩进?
  • c语言基于libpcap实现一个抓包程序过程
  • 我安装的linux时默认语言选择的是中文,又乱码,怎么可以解决?怎么更改默认语言成英文?
  • HTML超文本标记语言教程及实例
  • Redhat9安装时语言只选择了中文,现在还能再增加其它语言的支持吗?如英文
  • MD5算法的C语言实现
  • 请问哪里有ubuntu 9.0版本的中文语言包和KDE的中文语言包下载,我用Google搜索了很多地方都没有!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3