新闻中心

J*aScript文件系统访问API

2025-10-16
浏览次数:
返回列表
File System Access API 允许现代浏览器直接操作本地文件,支持打开、读取、写入、保存及创建文件和遍历目录。1. 使用 showOpenFilePicker 选择并读取文本文件;2. 通过 showS*eFilePicker 创建新文件并保存内容;3. 利用已有句柄编辑并写回原文件;4. 调用 showDirectoryPicker 遍历目录中的文件。所有操作需用户触发,确保安全,且可请求持久化权限。适用于代码编辑器、笔记应用等场景,提升 Web 应用体验。

javascript文件系统访问api

J*aScript 文件系统访问 API(File System Access API)让网页可以直接与用户设备上的文件和目录交互,提供更接近原生应用的体验。它允许用户选择文件、读取、写入、保存甚至创建新文件,而无需依赖传统的 input[type=file] 或下载链接。

支持的功能

该 API 主要适用于现代 Chromium 浏览器(如 Chrome 86+、Edge 86+),目前在 Firefox 和 Safari 中暂不支持或处于实验阶段。

核心功能包括:

  • 打开本地文件并读取内容
  • 将更改保存回同一个文件
  • 创建新文件并保存到用户指定位置
  • 访问和遍历目录中的文件
  • 监听文件变化(未来可能支持)

基本使用方法

以下是常见操作的代码示例。

1. 打开一个文本文件

使用 window.showOpenFilePicker() 让用户选择文件:

async function openFile() {
  try {
    const [fileHandle] = await window.showOpenFilePicker({
      types: [{
        description: 'Text files',
        accept: { 'text/plain': ['.txt'] }
      }]
    });
    const file = await fileHandle.getFile();
    const content = await file.text();
    return content;
  } catch (err) {
    console.error('用户取消或发生错误', err);
  }
}
2. 保存内容到文件

使用 showS*eFilePicker() 获取一个可写文件句柄:

async function s*eFile(content) {
  const fileHandle = await window.showS*eFilePicker({
    suggestedName: 'untitled.txt',
    types: [{
      description: 'Text files',
      accept: { 'text/plain': ['.txt'] }
    }]
  });

  const writable = await fileHandle.createWritable();
  await writable.write(content);
  await writable.close();
}
3. 编辑已有文件并保存

如果已经有一个文件句柄,可以直接写回:

I-Shop购物系统 I-Shop购物系统

部分功能简介:商品收藏夹功能热门商品最新商品分级价格功能自选风格打印结算页面内部短信箱商品评论增加上一商品,下一商品功能增强商家提示功能友情链接用户在线统计用户来访统计用户来访信息用户积分功能广告设置用户组分类邮件系统后台实现更新用户数据系统图片设置模板管理CSS风格管理申诉内容过滤功能用户注册过滤特征字符IP库管理及来访限制及管理压缩,恢复,备份数据库功能上传文件管理商品类别管理商品添加/修改/

I-Shop购物系统 0 查看详情 I-Shop购物系统
async function editAndS*e(fileHandle, newContent) {
  const writable = await fileHandle.createWritable();
  await writable.write(newContent);
  await writable.close();
}
4. 读取目录内容

使用 showDirectoryPicker() 选择文件夹:

async function readDirectory() {
  const dirHandle = await window.showDirectoryPicker();

  for await (const entry of dirHandle.values()) {
    if (entry.kind === 'file') {
      const file = await entry.getFile();
      console.log(file.name);
    }
  }
}

安全与权限

出于安全考虑,所有操作都需要用户主动触发(如点击按钮),不能自动执行。浏览器会弹出系统级对话框,确保用户知情并授权。

一旦获得文件或目录句柄,可在会话中重复使用,但持久化访问需要请求权限:

const permission = await fileHandle.queryPermission({ mode: 'readwrite' });
if (permission !== 'granted') {
  await fileHandle.requestPermission({ mode: 'readwrite' });
}

实际应用场景

这个 API 特别适合以下类型的应用:

  • 代码编辑器(如在线 IDE)
  • 笔记应用(直接保存为 .md 文件)
  • 图像/音频元数据编辑器
  • 配置文件管理工具

基本上就这些。只要浏览器支持,File System Access API 能极大提升 Web 应用的操作能力和用户体验,让网页更像本地程序。不过要注意兼容性,并为不支持的环境准备降级方案(比如传统 input + download)。

以上就是J*aScript文件系统访问API的详细内容,更多请关注其它相关文章!


# 编辑器  # 成都数据优化招聘网站  # 安徽推荐seo推广软件  # 南通建设网站企业  # 日本网络推广网站有哪些  # 网站线上线下推广方案  # 新县360推广营销  # 抖音营销推广问卷分析  # 如何推广营销客户端  # 济宁seo推广排名  # 网络优化seo营销推广  # 可以直接  # 并保存  # 适用于  # 已有  # javascript  # 购物系统  # 遍历  # 文件系统  # 句柄  # 配置文件  # win  # ai  # safari  # 工具  # access  # edge  # 浏览器  # java 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 如何在低配置电脑上搭建轻量级J*a环境_占用更小的环境选择技巧  谷歌浏览器无痕模式怎么开 Chrome开启无痕浏览设置方法【教程】  MAC如何将整个网页截长图_MAC使用Safari的导出为PDF或第三方工具  J*aScript打印功能_j*ascript输出控制  怎么在浏览器上运行HTML文件_浏览器运行HTML文件技巧【技巧】  Bilibili动漫最新防封地址发布-Bilibili动漫2025年最稳正版入口推荐  LocoySpider如何部署到云服务器_LocoySpider云部署的远程配置  C++如何操作注册表_Windows平台下C++读写注册表的API函数详解  J*aScript动态修改指定div内所有a标签样式指南  解决Bootstrap卡片顶部边距导致背景图下移的问题  c++如何使用Catch2编写单元测试_c++简洁易用的BDD风格测试框架  如何使 Jest 模拟函数默认抛出错误以提高测试效率  《刺客信条4:黑旗》重制版新细节曝光:无缝加载 地图更细致!  优化MinIO list_objects_v2 操作的性能瓶颈与最佳实践  windows10怎么查看硬盘序列号_windows10硬盘id查询命令  Win11怎么设置鼠标主按键_Win11鼠标左右键功能互换  百度浏览器字体显示异常偏小_百度浏览器字体渲染修复方案  如何在 Excel Online 和 Google 表格中更改日期格式  Animex动漫社网入口地址 Animex动漫社网正版在线入口  想当下一个《2077》?《心之眼》Steam评价升至"多半好评"  C#使用XPath查询节点时出错? 常见语法错误与调试技巧  Win10如何恢复误删的快捷方式_Win10重建常用软件快捷方式  AO3访问入口汇总 AO3网页版同人作品一键直达  C++如何操作大型数据集_使用C++流式处理(Streaming)技术避免一次性加载大文件  《明末:渊虚之羽》设计师谈设计角色:那会刚毕业 充满激情  TikTok国际版网页端快速入口 TikTok全球版短视频浏览教程  理解J*aScript Promise的微任务队列与执行顺序  AO3官方在线访问地址 Archive of Our Own最新镜像合集  微信怎么把收藏的内容分类管理 微信收藏内容标签分类方法  小猿搜题在线学习页面在哪_小猿搜题在线学习中心入口  抖音未来赚钱的新趋势 2025年值得关注的变现风口分析  响应式CSS Grid布局:优化网格项在小屏幕下的堆叠与宽度适配  Win11怎么安装Linux子系统 Win11 WSL2安装Ubuntu及环境配置指南  如何创建独立于主系统的J*a运行环境_隔离式环境搭建策略  J*a里如何使用N*igableMap进行导航操作_可导航Map操作技巧解析  德邦快递查询平台 德邦快递物流信息查询入口  Node.js 中使用 node-cron 实现定时 API 数据抓取与处理  Highcharts 雷达图径向轴标签定制指南:利用多Y轴实现数值标注  win11 arm版怎么安装 M1/M2 Mac虚拟机安装ARM win11的方法  html两个JS只运行一个怎么办_让双JS在html中都运行方法【技巧】  CSS实现侧边栏导航项全宽圆角悬停背景效果  汽水音乐网页版使用入口_汽水音乐电脑版播放指南  Win11输入法不见了怎么办_Windows11恢复语言栏显示方法  深入理解J*a链表中的IPosition接口与使用  Log4j Console Appender性能瓶颈与高并发优化策略  QQ邮箱网页版登录入口 QQ邮箱官方在线使用平台  Eclipse怎么运行工程_Eclipse工程运行配置说明  荒野行动PC版怎么注册_荒野行动PC版账号注册详细流程图文教程  Lar*el表单中优雅地处理“返回”按钮以规避验证:最佳实践指南  Descript怎样用AI剪辑自动去噪_Descript用AI剪辑自动去噪【自动降噪】 

搜索