遍历文件夹下的所有子文件夹及文件

5 篇文章 0 订阅
5 篇文章 0 订阅
 public StringBuilder TraversingCatalog(StringBuilder strb, string path) 
     {
         if (Directory.Exists(path) == false)
         { return strb; }
         else
         {
             DirectoryInfo dirInfo = new DirectoryInfo(path);
             int allNum = dirInfo.GetDirectories().Length + dirInfo.GetFiles("*.*").Length;
             if (allNum != 0) //没有任何文件夹和文件就建立"(空白)"节点并返回false
             {
                 //循环文件夹(避免混乱,先循环文件夹)
                 foreach (DirectoryInfo folder in dirInfo.GetDirectories())
                 {
                     if (GetFilesCount(folder) > 0)//检查检查该文件下是否存在文件与文件夹下所有子文件夹是否存在文件
                     {
                         strb.AppendFormat("<ul><li id=\"" + folder.FullName.ToString() + "\" data-options=\"state:\'closed\'\"><span>{0}</span>", folder.Name); //得到文件夹名
                         TraversingCatalog(strb, path + "\\" + folder.Name); //递归遍历其它文件夹
                         //循环文件
                         strb.AppendFormat("</li></ul>");
                     }
                 }
                 if (dirInfo.GetFiles("*.*").Length > 0)
                 {
                     strb.AppendFormat("<ul>");
                 }
                 foreach (FileInfo file in dirInfo.GetFiles("*.*")) //循环扩展名为*.*的文件
                 {
                     strb.AppendFormat("<li id=\"" + file.FullName.ToString() + "\"><span>{0}</span></li>", file.Name);
                 }
                 if (dirInfo.GetFiles("*.*").Length > 0)
                 {
                     strb.AppendFormat("</ul>");
                 }
                 return strb;
             }
             return strb;
         }
     }


    public static int GetFilesCount(DirectoryInfo dirInfo)
        {
            int totalFile = 0;
            totalFile += dirInfo.GetFiles().Length;//获取全部文件
            //totalFile += dirInfo.GetFiles("*.txt").Length;//获取某种格式
            foreach (System.IO.DirectoryInfo subdir in dirInfo.GetDirectories())
            {
                totalFile += GetFilesCount(subdir);
                if (totalFile>0)//直接查看文件的数量是否大于0,若大于则表示该文件夹下存在文件,直接输出1即可
                {
                    break;
                }
            }
            return totalFile;//若totalFile=0 表示该文件夹下不存在文件
        }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
雪山凌狐教程出品,文件遍历器来袭,希望通过源码的分享能跟大家一起学习文件遍历功能,内涵绝对干货内容和套路可以直接套用! 为了避免不使用线程时界面卡顿,调用了精易模块5.28的线程功能,你不喜欢可以自己去掉或者用上自己写的多线程代码都可。这个关系不大。 其他部分纯源码不涉及其他模块。 软件功能: 1. 首先设定一个要遍历文件夹,可以设置要遍历文件的后缀名或者不设置,可以选择是否遍历目录或者只是根目录,进行所有文件遍历并输出找到的文件文件名,文件完整路径,修改时间,文件大小到超级列表框。 2. 遍历完成后,可以在搜索框输入内容进行即时搜索,请注意是即时的。 3. 可以点击清空清空列表框内容。 4. 可以自动保存和读取配置。(该部分用了模块的批量保存命令,你也可以手动保存) 源代码亮点: 1. 线程调用,界面不卡顿(可以自己改了删掉或者用自己的多线程代码) 2. 新建了一个程序集叫做“程序集_遍历”,里面的“遍历文件”函数可以脱离该源码使用到你任何的程序中,可直接接入性非常高,只需要传入参数即可。 3. 主窗口的函数中有一个函数叫做“时间格式化”,也可以直接脱离该源码直接使用。 4. 当搜索框内容被改变时,如何进行即时搜索并再次显示出来?源码中是一个很好的例,值得学习。
易语言是一种面向过程的编程语言,虽然它对于遍历JSON数组的功能支持相对较弱,但我们可以通过自己实现遍历的方法来处理。 首先,我们需要了解JSON数组的结构。JSON数组是由多个JSON对象组成,每个对象都有自己的键值对。在易语言中,我们可以用字符串来表示JSON数组。例如,一个包含两个JSON对象的数组可以表示为:"[{"name":"Tom","age":18},{"name":"Alice","age":20}]"。 我们可以通过以下步骤来遍历这个JSON数组: 1. 首先,将表示JSON数组的字符串赋值给一个变量,如jsonStr。 2. 接下来,先使用Split函数将jsonStr按照"]"分割成多个字符串,得到一个字符串数组,记为subStrArray。 3. 创建一个循环,遍历subStrArray中的每一个字符串。 4. 对于每个字符串,我们需要使用IndexOf函数找到其中的键值对。首先使用IndexOf函数找到第一个"{"的位置,再使用IndexOf函数找到第一个"}"的位置,这样就得到了一个JSON对象的字符串,比如"{"name":"Tom","age":18}"。 5. 对于每个JSON对象的字符串,我们可以使用Split函数将其按照","分割成多个字符串,得到一个字符串数组,记为kvArray。 6. 创建一个循环,遍历kvArray中的每一个字符串。 7. 对于每个字符串,使用Split函数将其按照":"分割成两个字符串,分别表示键和值,得到一个长度为2的字符串数组,记为pairArray。 8. 在循环中,我们可以通过pairArray[0]获取到键,通过pairArray[1]获取到值。 9. 根据自己的需要,可以将键值对保存到变量中,或者进行其他操作。 通过以上步骤,我们可以遍历JSON数组中的每一个键值对。需要注意的是,由于易语言对于JSON的处理能力较弱,所以以上方法只适用于JSON数组结构比较简单的情况,如果JSON数组嵌套层次较深,以上方法可能会比较繁琐。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值