Javascript遍历目录时使用for..in循环无法获取Files对象和SubFolders对象问题的解决方法

news/2024/12/1 14:15:01/文章来源:https://www.cnblogs.com/tyysoft/p/18579764

 

 

1 Javascript遍历目录时使用for..in循环无法获取Files对象和SubFolders对象

1.1 问题场景

  在JavaScript中遍历目录,使用for.. in循环时,无法获取到Files对象和SubFolders对象,导致无法遍历目录和子目录。
  代码如下:

function GetAllFilesInSubFolder(path, filter) 
{var stack = new Array();  //目录压栈。var fileList = new Array();  //文件列表var folder = "";var objFolder;var fso = new ActiveXObject("Scripting.FileSystemObject");var objFile;var strFilePath;var i, j ;stack.push(path); //根目录先填充到队列while(stack.length > 0){folder = stack.pop();if(FolderExists(folder)){objFolder = fso.GetFolder(folder);for(var objFile in objFolder.Files) //无法获取文件,不能进入循环。{strFilePath = objFile.Path;if(strFilePath.search(filter) > 0){//HTML文件加入队列。fileList.push(strFilePath);}}for(var objFd in objFolder.SubFolders)  //无法获取子文件夹,不能进入循环{stack.push(objFd.Path);}}else{print_error(sprintf("文件夹不存在:<%s>", folder));}}return fileList;
}

1.2 修正方法

  经常尝试和查找网络资料, 正常工作的遍历目录的Javascript函数如下:

// ---------------------------------------------------------------------------
// @fn         获取给定目录下的所有文件,包括子文件夹下的文件
// @param[in]  path 指定目录
// @param[in]  filter 过滤条件(扩展名)
// @return     文件列表数组
// @author     tyysoft
// @date       2024-11-00 08:39:18
// @note       无
// ---------------------------------------------------------------------------
function GetAllFilesInSubFolder(path, filter) 
{var stack = new Array();  //目录压栈。var fileList = new Array();  //文件列表var folder = "";var objFolder;var fso = new ActiveXObject("Scripting.FileSystemObject");var objFile;var strFilePath;var i, j ;stack.push(path); //根目录先填充到队列while(stack.length > 0){folder = stack.pop();if(FolderExists(folder)){objFolder = fso.GetFolder(folder);var fileEnum = new Enumerator(objFolder.Files);for(i = 0; !fileEnum.atEnd(); fileEnum.moveNext(),i++){strFilePath = fileEnum.item().Path;if(strFilePath.search(filter) > 0){//HTML文件加入队列。fileList.push(strFilePath);}}var folderEnum = new Enumerator(objFolder.SubFolders);for(i = 0; !folderEnum.atEnd(); folderEnum.moveNext(),i++){stack.push(folderEnum.item().Path);}}else{print_error(sprintf("文件夹不存在:<%s>", folder));}}return fileList;
}

文档作者声明:本文档仅用于学习交流,未经作者许可,不得将本文档用于其他目的。
Copyright © 2022~2024 All rights reserved.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/844559.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机基础与程序设计第十周总结

学期(如2024-2025-1) 学号(如:20241300) 《计算机基础与程序设计》第X周学习总结 作业信息这个作业属于哪个课程 https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP这个作业要求在哪里 https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP/homework/13273这个作…

高级语言程序设计第九次个人作业

这个作业属于哪个课程:https://edu.cnblogs.com/campus/fzu/2024C 这个作业要求在哪里: https://edu.cnblogs.com/campus/fzu/2024C/homework/13311 学号:102400111 姓名:蔡伟仡 14.17.314.17.414.17.514.17.1014.17.1114.18.314.18.414.18.5总结与反思:熟悉枚举和共用体

20222412 2021-2022-2 《网络与系统攻防技术》实验七实验报告

20222412 2021-2022-2 《网络与系统攻防技术》实验七实验报告 1.实验内容 本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法。具体实践有 (1)简单应用SET工具建立冒名网站 SET工具是一款开源的社会工程学渗透测试工具,专门用于模拟各种社会工程…

2024-2025-1 20241411王思棋《计算机基础与程序设计》第十周学习总结

作业信息 |这个作业属于哪个课程|https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP| | -- |-- | |这个作业要求在哪里|https://www.cnblogs.com/rocedu/p/9577842.html#WEEK10| | 这个作业的目标|信息系统、数据库与SQL、人工智能与专家系统、人工神经网络、模拟与离散事…

2024-2025-1 20241421 刘庆安《计算机基础与程序设计》第十周学习总结

这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK10这个作业的目标 信息系统、数据库与SQL、人工智能与专家系统、人工神经网络、模拟与离散事件、排队系统、天气与地震模型、图形图像作业正文…

消费占GDP比重

import matplotlib.pyplot as plt from pylab import mpl# 设置matplotlib支持中文字体 mpl.rcParams["font.sans-serif"] = ["SimHei"] # Windows系统使用黑体 # mpl.rcParams["font.sans-serif"] = ["Arial Unicode MS"] # macOS系…

20241313 刘鸣宇 《计算机基础与程序设计》第十周学习总结

2024-2025-1 20241313 《计算机基础与程序设计》第十周学习总结 作业信息这个作业属于哪个课程 <班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 <作业要求的链接>(如2024-2025-1计算机基础与程序设计第一周作业)这个作业的目标 <写上具…

同步时钟,异步时钟

synchronous & asynchronous 在静态时序分析中,有一个很重要的概念是同步和异步 如果 launch clock 与 capture clock 有固定的相位差,那就是同步时序 如果两者没有固定的相位差,那就是异步时序 一般情况下,STA 只检查同步时序,不用检查异步时序 同步时序又分为以下几…

Python数据爬取处理可视化,手把手全流程教学

这篇博客中,选取openjudge网站上“百练”小组中的用户答题数据,作为材料进行教学目录爬取主页面内容主页面内容提取需求数据爬取数据处理数据分析 网站地址:http://bailian.openjudge.cn/使用到的Python包:requests、pandas、re、BeautifulSoup、time、matplotlib、seaborn…

Nuxt.js 应用中的 render:island 事件钩子

title: Nuxt.js 应用中的 render:island 事件钩子 date: 2024/12/1 updated: 2024/12/1 author: cmdragon excerpt: 在 Nuxt.js 中,render:island 钩子允许开发者在构建“岛屿”HTML之前进行处理和修改。此钩子为实现复杂的客户端交互和动态内容提供了基本支持,特别适合与…

linux 软连接使用

转载请注明出处:在Linux系统中,软连接(Symbolic Link)是一种特殊类型的文件链接,类似于Windows系统中的快捷方式。它允许用户通过一个文件路径访问另一个文件或目录,而不需要拥有原始文件或目录的实际拷贝。软连接是通过文件名来引用文件或目录,而不是通过它们的物理位置…

2024.11多模态学习月报

2024年11月学习月报 SegEarth-OV SegEarth-OV是面向遥感图像的开放词汇语义分割模型。SegEarth-OV的模型架构为CLIP,并且采用SimFeatUp作为上采样器。由于FeatUp中的上采样器和下采样器都是可学习的,所以难以保证HR特征完整。于是在SimFeatUp中引入了一个额外的图片重建损失来…