Javascript遍历目录时使用for..in循环无法获取Files对象和SubFolders对象问题的解决方法
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.
Javascript遍历目录时使用for..in循环无法获取Files对象和SubFolders对象问题的解决方法的更多相关文章
- 关于vue-cli3打包时遇到Cannot assign to read only property 'exports' of object '#<Object>'问题的解决方法。
vue-cli3打包时遇到Cannot assign to read only property 'exports' of object '#<Object>'问题的解决方法. 大致是说, ...
- WebMagic编译时提示Failure to transfer org.apache.maven.plugins:maven-surefire-plugin:pom:2.18的解决方法
问题描述: 从http://git.oschina.net/flashsword20/webmagic 下载最新代码,按照http://webmagic.io/docs/zh/posts/ch3 ...
- Python和Ruby抓取网页时的中文乱码问题(在Eclipse和Apatana Studio下均是这种解决方法
Python抓取中文网页乱码 :Eclipse+pydev2.2+python2.7 :Apatana Studio3+ pydev2.2+python2.7 run时设置 run--&g ...
- 使用MSBUILD 构建时出错 error MSB3086: Task could not find "sgen.exe" using the SdkToolsPath的解决方法
如果项目有添加有WB引用,比如引用其它网站的WEB服务等,那么VS在编译时会自动生成个 [项目名称].Serializers.dll的文件,就是把引用服务中的相关对象信息生成硬编码的程序集,以提高效率 ...
- VMware安装时Error 1324. The path My Documents contains a invalid character的原因和解决方法
终于找到了自己想要的答案,顶顶,吼吼~ 我今天安装VMware Workstation时,总是提示我Error 1324. The path My Documents contains a inval ...
- Linux登录MySQL时出现 Can't connect to local MySQL server through socket '/tmp/mysql.sock'解决方法
在Linux上登录MySQL时出现如下提示,如下图: 通过查找资料了解到: MySQL有两种连接方式: (1)TCP/IP (2)socket 对mysql.sock来说,其作用是程序与mysqlse ...
- Tomcat的webapps目录下的classes文件夹下缺失编译好的.class文件原因及其解决方法
右键,选择BuildPath: 可以编辑Output folder,指定编译后的文件的存放目录,一般是target/classes目录
- GetModuleFileNameEx遍历获取64bit程序路径失败的一种解决方法(Win7-64-bit)
问题: 32位程序在64位系统上调用GetModuleFileNameEx()遍历获取64位进程的全路径失败,得到的路径都为空. 根据官方的说法: For the best results use t ...
- MVC中调用Public_Class时,VS2012老提示:当前上下文中不存在名称“Json”的解决方法
TMD,老TMD困扰我,每次新建MVC项目后就提示这个,原因在此: public class Public_Class <==此处应为:Public_Class : Controller { ...
- 配置caffe的python环境时make pycaffe提示fatal error: numpy/arrayobject.h No such file or directory解决方法
重装numpy: sudo pip uninstall numpy sudo pip install numpy 是没有用的... 解决的办法就是: sudo apt-get install pyth ...
随机推荐
- DOM & BOM – 冷知识 (新手)
JS 无法 query select 到伪元素 参考: 使用JS控制伪元素的几种方法 JS style remove property 是 kebab-case set property 是 came ...
- Tomcat——idea集成本地Tomcat
IDEA 集成本地Tomcat 添加配置 添加本地Tomcat服务器 配置本地Tomcat路径 部署项目 在 webapp 中添加一个简单的页面作 ...
- Nuxt Kit 中的模板处理
title: Nuxt Kit 中的模板处理 date: 2024/9/20 updated: 2024/9/20 author: cmdragon excerpt: 摘要:本文详细介绍了在Nuxt ...
- Wpf使用NLog将日志输出到LogViewer
1 LogViewer LogViewer是通过UDP传输的高性能实时log查看器. 具有一下特性: 通过UDP读取日志 通过文件导入日志 导出日志到一个文件中 排序.过滤(日志树,日志等级)和查找 ...
- Nuxt.js 应用中的 page:start 钩子详解
title: Nuxt.js 应用中的 page:start 钩子详解 date: 2024/10/8 updated: 2024/10/8 author: cmdragon excerpt: pag ...
- 2021年6月国产数据库排行榜:OceanBase、PolarDB会师TiDB、openGauss,入局开源阵营,逐鹿生态建设
"首夏犹清和,芳草亦未歇",时至六月,百花齐放.百家争鸣的国产数据库市场依旧延续着如骄阳般火热的态势.不过从最新一期的 国产数据库流行度排行榜 Top 10 中不难发现,一个词足以 ...
- 基于 KubeSphere 的开源微服务开发平台 Pig 最佳实践
作者:何昌涛,北京北大英华科技有限公司高级 Java 工程师,云原生爱好者. 前言 近年来,为了满足越来越复杂的业务需求,我们从传统单体架构系统升级为微服务架构,就是把一个大型应用程序分割成可以独立部 ...
- 【Kernel】基于 QEMU 的 Linux 内核编译和安装
目录 安装虚拟机系统 共享目录 编译内核 卸载内核 参考资料 本文主要记录个人做存储系统研究时,在 QEMU 环境下编译和安装 Linux 内核的过程 安装虚拟机系统 之前在 利用 RocksDB + ...
- Tomcat线程池详解,为什么SpringBoot最大支持200并发?
Q:经典面试题,SpringBoot 应用可以同时并发处理多少请求? A:SpringBoot 应用并发处理请求数主要由两个因素影响,使用的 Servlet容器(默认使用 Tomcat,常用的还有 j ...
- 用JavaScriptt从一个路径字符串中获取文件名
思路 1.通过'\'关键字用split分割成数组 2.取分割后数组的最后一个就是文件名 3.另外,字符串中\是没意义的,需要2个\\ 相关代码 <script> var a='C:\\Pr ...