zoukankan      html  css  js  c++  java
  • linux c遍历文件夹 和文件查找的方法

    linux c遍历文件夹的方法比较简单,使用c来实现

    #include <iostream>
    #include <stdio.h>
    
    #include <sys/types.h>
    #include <dirent.h>
    #include <sys/dir.h>
    #include <sys/stat.h>
    
    ...
    enum
    {
        DT_UNKNOWN = 0,     //未知类型
        DT_FIFO = 1,        //管道
        DT_CHR = 2,         //字符设备文件
        DT_DIR = 4,         //目录
        DT_BLK = 6,         //块设备文件
        DT_REG = 8,         //普通文件
        DT_LNK = 10,        //连接文件
        DT_SOCK = 12,       //套接字类型
        DT_WHT = 14         //
    };
    void loopDir(const char *dir_path) { 
      char temp[256] = {0};
      struct dirent *pdirent;
    DIR
    *d_info = opendir(dir_path); if (d_info) { while ((pdirent = readdir(d_info)) != NULL) { if (pdirent->d_type & DT_REG) { //普通文件 } if (pdirent->d_type & DT_DIR) { //目录,递归 } } } } ...

    在类Unix或linux (OSX,iOS,Android系统)下面搜索某一类型的文件可以用OgreSearchOps来使用,非常方便,对应 win32 则需要另外一套机制

    // 头文件引用部分
    #if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
        #include <io.h>
    #else
        #include <unistd.h>
        #include <stdio.h>
        #include <dirent.h>
        #include <sys/stat.h>
    
        #include "OgreSearchOps.h"
    #endif
    
    
    void MfindFiles(const std::string &dir_path,const std::string &partten,std::vector<std::string> &arr)
    {
    #if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
        _finddata_t FileInfo;
        string strfind = dir_path + "\" + partten;
        long Handle = _findfirst(strfind.c_str(), &FileInfo);
        
        if (Handle == -1L)
        {
            exit(-1);
        }
        do{
            if (FileInfo.attrib & _A_SUBDIR)
            {
            }
            else
            {
                string filename = (dir_path + "\" + FileInfo.name);
                arr.push_back(FileInfo.name);
            }
        }while (_findnext(Handle, &FileInfo) == 0);
        
        
        _findclose(Handle);
    #else
        findFiles(dir_path, partten, false, false, &arr);
    #endif
    }
    
    // 测试  搜索所有的.plist 后缀名文件
        std::vector<std::string> plist_file_list;
        MfindFiles(effect_path, "*.plist",plist_file_list);
    
  • 相关阅读:
    CSS箭头
    rails 路由正则表达式
    centos6.7 配置MongoDB日志
    centos6.7 配置Elasticsearch
    拼音纠错
    Pandas学习笔记
    WebService using Spring throwed org.xml.sax.SAXException: Bad envelope tag: htm
    怎样让Windows任务管理器CPU占用率呈现正玄曲线(解释+C#实现)
    Deepin Linux获得关注,国产GUI值得提倡
    Swing组件的另类嵌套
  • 原文地址:https://www.cnblogs.com/howeho/p/4213712.html
Copyright © 2011-2022 走看看