当前位置:首页 > JavaScript

js实现文件夹

2026-02-28 22:23:14JavaScript

实现文件夹操作的 JavaScript 方法

在浏览器端的 JavaScript 中,由于安全限制,无法直接操作本地文件系统。但可以通过以下方式模拟或间接实现文件夹操作:

使用 <input type="file"> 选择文件夹

HTML5 提供了 webkitdirectory 属性允许用户选择整个文件夹:

js实现文件夹

<input type="file" id="folderInput" webkitdirectory>
<script>
  document.getElementById('folderInput').addEventListener('change', function(e) {
    const files = e.target.files;
    console.log(files); // 包含文件夹内所有文件
  });
</script>

Node.js 中的文件夹操作

在 Node.js 环境下可以使用 fs 模块进行完整文件夹操作:

js实现文件夹

const fs = require('fs');
const path = require('path');

// 创建文件夹
fs.mkdirSync('newFolder');

// 读取文件夹内容
fs.readdirSync('targetFolder').forEach(file => {
  console.log(file);
});

// 递归删除文件夹
function deleteFolderRecursive(path) {
  if (fs.existsSync(path)) {
    fs.readdirSync(path).forEach(file => {
      const curPath = path + '/' + file;
      if (fs.lstatSync(curPath).isDirectory()) {
        deleteFolderRecursive(curPath);
      } else {
        fs.unlinkSync(curPath);
      }
    });
    fs.rmdirSync(path);
  }
}

浏览器端的虚拟文件夹

可以使用第三方库如 browser-fs-access 提供更友好的文件夹访问:

import { fileOpen, directoryOpen } from 'browser-fs-access';

// 打开文件夹
const dirHandle = await directoryOpen({
  recursive: true // 允许递归访问子目录
});

使用 File System Access API

现代浏览器支持 File System Access API 进行更高级操作:

// 请求文件夹访问权限
const dirHandle = await window.showDirectoryPicker();

// 遍历文件夹内容
for await (const entry of dirHandle.values()) {
  console.log(entry.kind, entry.name);
}

注意事项

  • 浏览器环境中的文件夹访问需要用户明确授权
  • Node.js 操作需要文件系统权限
  • 生产环境应考虑错误处理和权限检查
  • 不同浏览器对文件夹访问API的支持程度不同

标签: 文件夹js
分享给朋友:

相关文章

js实现验证码

js实现验证码

实现验证码的JavaScript方法 生成随机验证码 使用Math.random()生成随机字符串,结合数字和字母: function generateCaptcha() { const cha…

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callbac…

js 实现链表

js 实现链表

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,插入和删除操作效率较高。 链表的实现 在 JavaScrip…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。…