访问文件夹

访问文件夹并读取文件内容

将展示如何使用 JavaScript 中的 showDirectoryPicker() 方法来访问文件夹,并读取文件的内容。

HTML 结构

首先,需要一个按钮来触发打开文件夹的操作:

<button>打开文件夹</button>

还需要一个段落元素用于显示文件的内容:

<p></p>

JS 代码

接下来,使用 JavaScript 来处理按钮的点击事件,并访问文件夹。代码如下所示:

const btn = document.querySelector("button");
const p = document.querySelector("p");btn.addEventListener("click", async () => {try {const handler = await showDirectoryPicker();const root = await processHandler(handler);console.log(root); // 输出索引目录下的文件和文件夹// 输出文件内容,标准的文件上传时样子const file = await root.children[3].children[0].getFile(); // 需要找到这个文件夹下的文件const reader = new FileReader();reader.onload = (e) => {console.log(e.target.result);p.innerHTML = e.target.result;};// 当做存文本读取reader.readAsText(file, "utf-8");} catch (error) {console.log(error.message);}
});async function processHandler(handler) {if (handler.kind === "file") return handler;handler.children = [];// 获取文件夹所有内容const iterator = await handler.entries();for await (const [name, subHandler] of iterator) {const subHandle = await processHandler(subHandler);// 处理文件夹中内容handler.children.push(subHandle);}return handler;
}

在上述代码中,通过 document.querySelector("button") 获取到按钮元素,并添加了一个点击事件的监听器。

当按钮被点击时,使用 showDirectoryPicker() 方法来打开文件夹选择器。该方法返回一个处理器(handler),用于处理所选文件夹的操作。

然后,调用 processHandler() 函数来处理文件夹的内容。该函数首先判断处理器的类型,如果是文件(kind === "file"),则直接返回该处理器。

如果是文件夹,则初始化一个空数组 handler.children,用于存储文件夹下的子文件和子文件夹。

接下来,使用 await handler.entries() 获取文件夹下的所有内容,并通过 for await...of 循环遍历每个文件或文件夹。对于每个子文件或子文件夹,递归调用 processHandler() 函数,并将返回的处理器存储在 handler.children 数组中。

最后,返回处理器 handler

在读取文件内容的部分,使用了 getFile() 方法来获取文件对象,并创建了一个 FileReader 对象来读取文件的内容。通过设置 reader.onload 事件处理程序,可以在文件读取完成后获取文件内容,并将其输出到控制台和段落元素中。

通过这段代码,可以实现打开文件夹、访问文件夹内容,并读取文件的内容。

在这里插入图片描述

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

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

相关文章

【Note】CNN与现代卷积神经网络part3(附PyTorch代码)

文章目录 2 现代卷积神经网络2.1 批量规范化2.1.1 训练深层网络2.1.2 批量规范化层2.1.2.1 全连接层2.1.2.2 卷积层2.1.2.3 预测过程中的批量规范化 2.1.3 从零实现2.1.4 使用批量规范化层的 LeNet2.1.5 简明实现2.1.6 controversies&#xff08;争议&#xff09;2.1.7 Summary…

解码yakit 适配中国的 只要base64加密直接yakit

中国版的bp 浏览器上代理 文件 服务器 yakit yakit 劫持启动 配置代理 报错 爆破 模糊字典 选择admin 选择 第一步 第二步 成功

视频SDK,高效视频解决方案

随着企业业务的不断扩展和多样化&#xff0c;视频已成为企业宣传、教育和娱乐等多个领域不可或缺的内容。为了满足企业对视频的需求&#xff0c;美摄视频SDK开发应运而生&#xff0c;为企业提供全面、高效、安全和便捷的视频解决方案。 美摄视频SDK开发公司拥有丰富的经验和卓…

【PXIE301-211】青翼科技基于PXIE总线的16路并行LVDS数据采集、1路光纤数据收发处理平台

板卡概述 PXIE301-211是一款基于PXIE总线架构的16路并行LVDS数据采集、1路光纤收发处理平台&#xff0c;该板卡采用Xilinx的高性能Kintex 7系列FPGA XC7K325T作为实时处理器&#xff0c;实现各个接口之间的互联。板载1组64位的DDR3 SDRAM用作数据缓存。板卡具有1个FMC&#xf…

数字时代,VR虚拟展会打造全渠道同步营销新模式

随着经济的快速发展&#xff0c;VR虚拟展会逐步完善&#xff0c;对线下实体展会也产生了重大的影响&#xff0c;在这个数字化时代&#xff0c;展会展览也需要寻找新的表达方式&#xff0c;VR虚拟展会以一种全新的魅力吸引越来越多的观展者。 传统展厅的局限性&#xff1b; 1、…

ESP RainMaker 客户案例 #2|PitPat

PitPat 是美国领先的健身品牌&#xff0c;致力于通过游戏化的方式改变人们的锻炼习惯&#xff0c;增强健康。该品牌通过智能设备和相关的移动应用程序为从事家庭锻炼的个人提供虚拟跑步体验。目前&#xff0c;PitPat 针对不同受众群体&#xff0c;开发了Superun&#xff0c;Dee…

自动驾驶中的数据安全和隐私

自动驾驶技术的发展已经改变了我们的出行方式&#xff0c;但伴随着这项技术的普及&#xff0c;数据安全和隐私问题也变得愈发重要。本文将探讨自动驾驶中的数据收集、数据隐私和安全挑战&#xff0c;以及如何保护自动驾驶系统的数据。 自动驾驶中的数据收集 在自动驾驶技术中…

算法刷题总结(全)

刷题总结 by lds 2023-9-5 文章目录 1.数组/字符串1.1 合并两个有序数组【easy】1.2 移除元素【easy】1.3 删除有序数组中的重复项【easy】1.4 删除有序数组中的重复项II【mid】1.5 多数元素【easy】1.6 大数相加---【美团面试手撕题目】1.7 轮转数组【mid】1.8 买卖股票的最佳…

【Minio】图片处理

详解java google Thumbnails 图片处理(亲测)_gb4215287的博客-CSDN博客Thumbnails 图片缩略图https://blog.csdn.net/gb4215287/article/details/126885783#t3

pip报failed to create process

使用pip命令的时候报failed to create process 1、错误提示窗口如下图 2、报这个错误的原因&#xff0c;是因为你改动了python的目录名称或位置。因为&#xff0c;我的电脑是安装了anaconda2和anaconda3的&#xff0c;我想让python2和python3共存&#xff0c;就将anaconda2和a…

【Spring Boot项目】根据用户的角色控制数据库访问权限

文章目录 简介方法一添加数据库依赖配置数据库连接创建用户角色表创建Spring Data JPA实体和仓库实现自定义的网关过滤器配置网关过滤器几个简单的测试API 方法二创建数据库访问接口实现数据库访问接口创建用户角色判断逻辑创建网关过滤器配置网关过滤器 总结 简介 在一些特定…

通讯网关软件027——利用CommGate X2OPCUA实现OPC UA访问MSSQL服务器

本文介绍利用CommGate X2OPCUA实现OPC UA访问MS SQL数据库。CommGate X2OPCUA是宁波科安网信开发的网关软件&#xff0c;软件可以登录到网信智汇(http://wangxinzhihui.com)下载。 【案例】如下图所示&#xff0c;实现上位机通过OPC UA来获取MS SQL数据库的数据。 【解决方案】…

Cobalt Strike

文章目录 简介CS与msf的不同工具使用安装插件 简介 Cobalt strike 是一款基于 java 的渗透测试神器&#xff0c;常被业界人称为 CS 神器。自3.0 以后已经不在使用 Metasploit 框架而作为一个独立的平台使用&#xff0c;分为客户端与服务端&#xff0c;服务端是一个&#xff0c;…

(2022|ECCV,文本图像视频,3D 邻域注意,3D 稀疏注意)NÜWA:神经视觉世界创建的视觉合成预训练

NWA: Visual Synthesis Pre-training for Neural visUalWorld creAtion 公众号&#xff1a;EDPJ&#xff08;添加 VX&#xff1a;CV_EDPJ 或直接进 Q 交流群&#xff1a;922230617 获取资料&#xff09; 目录 0. 摘要 1. 简介 2. 相关工作 2.1. 视觉自回归模型 2.2. 视觉…

Flutter 剪裁(Clip)

&#x1f525; ClipOval &#x1f525; 子组件为正方形时剪裁成内贴圆形&#xff1b;为矩形时&#xff0c;剪裁成内贴椭圆 裁剪纯色背景 ClipOval(child: Container(width: 300.w,height: 300.w,decoration: const BoxDecoration(color: Colors.red),),), 裁剪背景图片 裁剪前…

PositiveSSL的泛域名SSL证书

PositiveSSL是Sectigo旗下的一个子品牌&#xff0c;致力于为全球用户提供优质、高效的SSL证书服务。PositiveSSL以Sectigo强大的品牌影响力和全球网络为基础&#xff0c;秉承“安全、可靠、高效”的服务理念&#xff0c;为各类网站提供全面的SSL证书解决方案。今天就随SSL盾小编…

string类模拟实现(c++)(学习笔记)

string 1.构造函数1.1 不带参构造1.2 带参数的构造函数1.3 合并两个构造函数。 2. 析构函数3.拷贝构造函数4. 赋值运算符重载5. size()/capacity()6. 解引用[]8.iterator迭代器7.Print()8.> 8. push_back()&append()8.1 reserve() 9. 10.insert()10.1 任意位置插入一个字…

把微信好友不小心删了,有什么办法找回?

常见的重新加回微信好友有以下几种&#xff1a; ①通过微信群找回&#xff0c;看有无共同的群&#xff0c;重新将对方加回来 ②通过朋友圈的动态找回 ③如果是加不久的好友&#xff0c;可以在微信新的朋友功能里重新添加 ④通过共同好友&#xff0c;让朋友圈推荐好友名片找…

微信小程序--数字化会议OA系统之首页搭建

一、Flex弹性布局 布局的传统解决方案&#xff0c;基于盒状模型&#xff0c;依赖 display属性 position属性 float属性。它对于那些特殊布局非常不方便&#xff0c;比如&#xff0c;垂直居中就不容易实现。 2009年&#xff0c;W3C提出了一种新的方案—-Flex布局&#xff0c;可…

【10】基础知识:React - DOM的diffing算法

一、虚拟 DOM 中 key 的作用 react/vue 中的 key 有什么作用&#xff1f;key的内部原理是什么&#xff1f; 简单来说&#xff1a; key 是虚拟 DOM 对象的标识&#xff0c;在更新显示时 key 起着极其重要的作用&#xff0c;提高渲染效率&#xff0c;防止渲染错误。 详细的说…