精华内容
下载资源
问答
  • 本文实例讲述了GO语言实现列出目录和遍历目录的方法。分享给大家供大家参考。具体如下: GO语言获取目录列表用 ioutil.ReadDir(),遍历目录用 filepath.Walk(),使用方法课参考本文示例。 具体示例代码如下: 代码...
  • 一个跨平台的Rust库,用于高效地递归​​遍历目录。 附带对以下符号链接的支持,控制打开的文件描述符的数量,以及用于修剪目录树中条目的有效机制。 MIT或双重许可。 文献资料 用法 要使用此板条箱,请将walkdir...
  • C语言遍历目录

    2018-11-13 17:09:09
    通过C语言实现对指定目录的递归遍历,用到的结构类型函数包括:DIR、struct dirent、opendir、readdir、closedir
  • 主要介绍了shell脚本递归遍历目录及子目录的例子,需要的朋友可以参考下
  • 今天小编就为大家分享一篇python 遍历目录(包括子目录)下所有文件的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • //遍历目录下文件方法 function printdir($dir) { $files = array(); //opendir() 打开目录句柄 if($handle = @opendir($dir)){ //readdir()从目录句柄中(resource,之前由opendir()打开)读取条目, // 如果...
  • 主要介绍了Python3遍历目录树实现方法,涉及Python目录树的遍历操作技巧,需要的朋友可以参考下
  • 代码如下:using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Threading; namespace copefile { class Program { static void Main(string[] args) { ...
  • 分享一个php遍历目录和文件列表的类,获取目录列表,获取文件列表,根据相对路径和绝对路径进行实例操作。
  • 本篇文章主要介绍了node.js遍历目录的方法示例,主要介绍了同步遍历和异步遍历两种方法,非常具有实用价值,需要的朋友可以参考下
  • Java遍历目录所有文件,读取指定文件夹下的所有文件名,并列出来,使用java.io.File 类的方法来访问系统中的目录,在窗口上部的文本框中输入c 盘根目录“c:\”,按下窗口下部的按钮“View”,则在窗口中部的文本区...
  • 本文实例总结了PHP遍历目录文件的常用方法。分享给大家供大家参考,具体如下: 测试算法(源代码经过本站工具http://tools.jb51.net/code/jb51_php_format进行格式化处理,以便于读者阅读) 算法1.简短系 foreach...
  • Pyhton中我们一般使用os.walk生成器来获取文件夹中的所有文件,这里我们就来详细看一下Python遍历目录中的所有文件的方法,包括一个进阶的利用fnmatch模块进行匹配的方法:
  • 一个类,可以遍历一个目录,将该目录下所有文件以及子目录及其文件都遍历,生成一个层次分明的数组,还可以将遍历的结果生成一个树状的字符串,直接echo到浏览器。 |-|a.txt |-|b.txt |-|c目录 |---|d.txt |---|c1...
  • python遍历目录文件名字输出到一个文本文档的代码 python2.7列出文件夹的所有名字到一个文本文件代码 python列出文件夹下的所有文件名字源码 python遍历目录下所有文件名 PYTHON TRAVERSE THE FLODER
  • 今天小编就为大家分享一篇使用Shell遍历目录及其子目录中的所有文件方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 目录遍历顾名思义就是把目录树中所有的目录及文件依次查找一遍,WINDOWS里的文件查找程序和 SafeClean Utilities(环保卫士)等都用到了目录遍历。我们当然也可以在自己的程序中加入这一功能。 下面就是该算法的...
  • 主要介绍了PHP简单实现遍历目录下特定文件的方法,结合2个简单实例总结分析了php针对目录下指定文件的遍历查询操作技巧,需要的朋友可以参考下
  • python脚本以递归遍历目录并将所有内容复制到您选择的新文件夹中。 非常适合在数据恢复后合并文件。 这应该在win 10,Linux和最有可能的MAC中工作。 我无法在MAC上进行测试,因为我没有MAC。 如果你想给我买一个HMU...
  • php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中 实例代码: <?php /** * @author Administrator * */ class TestGenerate { public static $appFolder = ; public static $ignoreFilePaths = ...
  • 递归遍历目录

    2018-08-22 17:36:43
    遍历文件夹,获取所有符合要求的文件路径。 会对整个文件夹进行递归遍历
  • C#遍历目录下的所有文件夹,非常好用的资源
  • 该代码源码未Python,执行后输入路径,可以对路径下文件进行递归遍历,将遍历结果,文件路径与文件名写入txt中,之后转码未excel
  • linux下遍历文件目录查找含有特定的后辍的文件
  • 易语言-遍历目录下所有指定文件类型上传到七牛
  • 遍历一个文件夹下面的所有文件(包括文件夹下的文件夹)
  • 1.遍历当前及其子目录中的所有文件,文件放到http/down的目录下无论几级均可。 2.下载的代码fileDownProcess.php文件中除了echo $file_data;其他不能有echo。这点很重要,否则下载下来的文件无法使用。 3.不支持中文...
  • 主要为了方便自己看一些图片形式的漫画,制作成自适应的图片网页使用键盘切换图片。
  • Linux c 遍历目录及目录下文件

    万次阅读 2019-04-06 13:31:16
    要想搜索,先要能够遍历指定目录下所有文件,并且支持对递归子目录遍历。 分析 我们知道,许多操作系统中的目录结构都是使用树结构。 使用递归的方法定义树是比较容易的。一棵树地一些节点的集合。 这个集合可以...

    背景


    某项目中需要对指定目录下的所有文本文件加密,于是需要搜索指定目录下所有的文本文件。

    要想搜索,先要能够遍历指定目录下所有文件,并且支持对递归子目录的遍历。

    分析


    我们知道,许多操作系统中的目录结构都是使用树结构。

    使用递归的方法定义树是比较容易的。一棵树地一些节点的集合。
    这个集合可以为空,若非空,则树由树根和0个或者多个非空的子树组成。
    子树中的根都被来自树根的一条有向的边所连接。

    因此,可以很自然地想到使用递归的方式来遍历指定的目录。

    除了递归,还可以考虑使用非递归方式实现,这样效率会更高,但也更复杂。

    递归实现


    • 思路:递归实现较简单,对于一个给定的目录,遍历目录下所有文件,有三种情况:

      • 本目录或父目录,忽略
      • 普通文件,输出
      • 目录,递归调用
    • 源代码如下:

    #include <stdio.h>
    #include <string.h>
    #include <sys/types.h>
    #include <dirent.h>
    #include <sys/stat.h>
    
    #define MAX_PATH_LEN (256)
    
    static void trave_dir(char* path) {
        DIR *d = NULL;
        struct dirent *dp = NULL; /* readdir函数的返回值就存放在这个结构体中 */
        struct stat st;    
        char p[MAX_PATH_LEN] = {0};
        
        if(stat(path, &st) < 0 || !S_ISDIR(st.st_mode)) {
            printf("invalid path: %s\n", path);
            return;
        }
    
        if(!(d = opendir(path))) {
            printf("opendir[%s] error: %m\n", path);
            return;
        }
    
        while((dp = readdir(d)) != NULL) {
            /* 把当前目录.,上一级目录..及隐藏文件都去掉,避免死循环遍历目录 */
            if((!strncmp(dp->d_name, ".", 1)) || (!strncmp(dp->d_name, "..", 2)))
                continue;
    
            snprintf(p, sizeof(p) - 1, "%s/%s", path, dp->d_name);
            stat(p, &st);
            if(!S_ISDIR(st.st_mode)) {
                printf("%s\n", dp->d_name);
            } else {
                printf("%s/\n", dp->d_name);
                trave_dir(p);
            }
        }
        closedir(d);
    
        return;
    }
    
    int main(int argc, char **argv)
    {   
        char *path = NULL;
     
        if (argc != 2) {
            printf("Usage: %s [dir]\n", argv[0]);
            printf("use DEFAULT option: %s .\n", argv[0]);
            printf("-------------------------------------------\n");
            path = "./";
        } else {
            path = argv[1];
        }
    
        trave_dir(path);
    
        return 0;
    }
    

    非递归实现


    非递归实现的方法会有很多,一个思路是,每次遍历目录时,把查找到的文件直接输出,目录则保存,用于下次遍历目录下的内容。

    此处使用链表实现,结构体用于存储目录路径和下一个目录,遍历目录的过程同上,代码如下:

    #include <stdio.h>
    #include <dirent.h> 
    #include <stdlib.h> 
    #include <string.h>
    #include <unistd.h>
    #include <error.h>
    #include <sys/stat.h>  
    
    #define MAX_FILE_NAME_LEN 256
    
    typedef struct foldernode_t {
      char *path;                // point to foldername or filename path
      struct foldernode_t *next;   
    } foldernode;
    
    static void travel_files(char *path)
    {
        DIR *dir;
        struct dirent *ptr;
        char foldername[MAX_FILE_NAME_LEN] = {0};
        char folderpath[MAX_FILE_NAME_LEN] = {0};
    
        foldernode *folderstart;
        folderstart = calloc(1, sizeof(foldernode));/* ignore err case */
        folderstart->path = calloc(1, MAX_FILE_NAME_LEN + 1); 
        strncpy(folderstart->path, path, MAX_FILE_NAME_LEN);
        folderstart->next = NULL;
    
        foldernode *folderfirst = folderstart; /* use to search */
        foldernode *folderlast = folderstart; /* use to add foldernode */
        foldernode *oldfirst = NULL;
    
        while(folderfirst != NULL) {
            printf("dir=%s\n", folderfirst->path);
            if ((dir = opendir(folderfirst->path)) != NULL) {
                while ((ptr = readdir(dir)) != NULL) {
                    if(strcmp(ptr->d_name, ".") == 0 || strcmp(ptr->d_name, "..") == 0) {
                        continue;  
                    } else if (ptr->d_type == DT_REG) { /* regular file */
                        printf("%s\n", ptr->d_name);
                    } else if (ptr->d_type == DT_DIR) { /* dir */
                        bzero(foldername, sizeof(foldername));
                        bzero(folderpath, sizeof(folderpath));
                        strncpy(foldername, ptr->d_name, sizeof(foldername));
                        snprintf(folderpath, sizeof(folderpath), "%s/%s", folderfirst->path , foldername);
                        printf("%s\n", folderpath);
                        
                        foldernode *foldernew;
                        foldernew = calloc(1, sizeof(foldernode));
                        foldernew->path = calloc(1, MAX_FILE_NAME_LEN + 1); 
                        strncpy(foldernew->path, folderpath, MAX_FILE_NAME_LEN);
                        foldernew->next = NULL;
                        
                        folderlast->next = foldernew;
                        folderlast = foldernew;
    
                    }
                }
            } else {
                printf("opendir[%s] error: %m\n", folderfirst->path);
                return;
            }
            oldfirst = folderfirst;
            folderfirst = folderfirst->next; // change folderfirst point to next foldernode
            if (oldfirst) {
                if (oldfirst->path) {
                    free(oldfirst->path);
                    oldfirst->path = NULL;
                }
                free(oldfirst);
                oldfirst = NULL;
            }
            closedir(dir);
        }
    }
    
    int main(int argc,char **argv)
    {
        if (argc != 2) {
            printf("Usage: %s path\n", argv[0]);
            return 0;
        }
    
        travel_files(argv[1]);
    
        return 0;
    }
    

    总体


    对目录的遍历是比较基本的功能,对于理解文件系统和数据结构有一定的帮助。

    也可以参考bash命令中ls的源码,增加对命令行参数的支持,实现更加复杂的功能。

    展开全文
  • 这个程序目的是遍历目录,找到所有指定文件名的文件,并删除其中指定的字符串。 复制代码 代码如下: <?php  //功能:删除指定目录(包括子目录)下所有指定文件中指定字符串  $tmpfiledir = $_SERVER[“DOCUMENT_...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 390,416
精华内容 156,166
关键字:

遍历目录