目录
访问文件:阅读和写作
读取文件:单文件
读取多个文件
写入文件:新文件
编辑现有文件
高级功能
目录列表
文件和目录删除
浏览器兼容性
资源
首页 web前端 css教程 开始使用文件系统访问API

开始使用文件系统访问API

Mar 14, 2025 am 10:28 AM

开始使用文件系统访问API

File System Access API为Web开发人员提供了一种功能强大的工具,可直接与用户的本地文件进行交互,从而启用读写访问。这为构建复杂的Web应用程序提供了令人兴奋的可能性,包括高级文本编辑器,IDE,图像操作工具以及增强的进出口功能,都在浏览器的前端内。让我们探索如何开始使用此API。

访问文件:阅读和写作

使用文件系统访问API的一个关键方面是安全性。所有API调用都必须在安全上下文中通过用户手势启动。我们将在下面的示例中使用单击事件。

读取文件:单文件

读取单个文件非常简洁:

令filehandle;

document.queryselector(“。pick-file”)。onclick = async()=> {
  [fileHandle] =等待窗口。showopenfilepicker();

  const file =等待filehandle.getFile();
  const content =等待file.text();

  返回内容;
};
登录后复制

假设一个带有“挑选文件”的HTML按钮,单击此按钮会通过window.showOpenFilePicker()触发文件选择器。所选文件的句柄存储在fileHandle中。该功能将文件的内容返回文本。

fileHandle对象提供诸如kind (“文件”或“目录”)和name的属性。

 //示例从Console.log(fileHandle)输出
filesystemfilehandle {chink:'file',name:'data.txt'}
登录后复制

fileHandle.getFile()检索文件详细信息(最后修改的时间戳,名称,大小,类型)和file.text()提取文件的内容。

读取多个文件

要读取多个文件,请将选项对象传递给showOpenFilePicker()

让filehandles;
const options = {多重:true};

document.queryselector(“。pick-file”)。onclick = async()=> {
  fileHandles =等待窗口。showopenfilepicker(options);

  //代码处理多个文件(请参阅下文)
};
登录后复制

multiple属性(默认值: false )启用多个文件选择。更多选项指定可接受的文件类型。例如,仅接受JPEG图像:

 const Options = {
  类型:[{描述:“图像”,接受:{“ image/jpeg”:“ .jpeg”}}],
  排除consceptalloption:是的,
};
登录后复制

处理多个文件:

 const allContent =等待承诺
  filehandles.map(async(filehandle)=> {
    const file =等待filehandle.getFile();
    const content =等待file.text();
    返回内容;
  }))
);

console.log(allContent);
登录后复制

写入文件:新文件

创建和写入新文件同样简单:

 document.queryselector(“。save-file”)。onclick = async()=> {
  const Options = {
    类型:[{description:“测试文件”,接受:{“ text/plain”:[.txt“]}}},
  };

  const handle =等待窗口。
  const writable =等待句柄。

  等待Writable.Write(“ Hello World”);
  等待Writable.Close();

  返回手柄;
};
登录后复制

window.showSaveFilePicker()打开文件保存对话框。 handle.createWritable()创建一个可写的流, writable.write()写入data和writable.close()最终确定写操作。

编辑现有文件

修改现有文件:

令filehandle;

document.queryselector(“。pick-file”)。onclick = async()=> {
  [fileHandle] =等待窗口。showopenfilepicker();

  const file =等待filehandle.getFile();
  const writable =等待fileHandle.CreateWrrable();

  等待writable.write(“这是一条新行”); //附加到文件
  等待Writable.Close();
};
登录后复制

此示例附加文本;要覆盖,请写入整个所需的内容。

高级功能

文件系统访问API还支持目录列表和文件/目录删除。

目录列表

document.queryselector(“。read-dir”)。
  const directoryhandle =等待窗口.showdirectorypicker();

  等待(目录Handle.Values()的const条目){
    console.log(entry.kind,entry.name);
  }
};
登录后复制

window.showDirectoryPicker()选择一个目录,循环通过其条目迭代。

文件和目录删除

删除文件:

 document.queryselector(“。pick-file”)。onclick = async()=> {
  const [fileHandle] =等待窗口。showopenfilepicker();
  等待filehandle.remove();
};
登录后复制

删除目录(递归):

 document.queryselector(“。pick-folder”)。onclick = async()=> {
  const directoryhandle =等待窗口.showdirectorypicker();
  等待DirectoryHandle.removeentry('data',{recursive:true});
};
登录后复制

浏览器兼容性

文件系统访问API在现代浏览器中享有广泛的支持,但请检查Caniuse.com以获取最新的兼容性信息。像browser-fs-access一样的小马填充可以解决兼容性差距。

资源

这种增强的解释为文件系统访问API提供了更全面和结构化的指南。请记住,用与相关文档的实际链接替换占位符链接。

以上是开始使用文件系统访问API的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1655
14
CakePHP 教程
1413
52
Laravel 教程
1306
25
PHP教程
1252
29
C# 教程
1226
24
Google字体可变字体 Google字体可变字体 Apr 09, 2025 am 10:42 AM

我看到Google字体推出了新设计(Tweet)。与上一次大型重新设计相比,这感觉更加迭代。我几乎无法分辨出区别

如何使用HTML,CSS和JavaScript创建动画倒计时计时器 如何使用HTML,CSS和JavaScript创建动画倒计时计时器 Apr 11, 2025 am 11:29 AM

您是否曾经在项目上需要一个倒计时计时器?对于这样的东西,可以自然访问插件,但实际上更多

HTML数据属性指南 HTML数据属性指南 Apr 11, 2025 am 11:50 AM

您想了解的有关HTML,CSS和JavaScript中数据属性的所有信息。

如何通过CSS选择第一个类名为item的子元素? 如何通过CSS选择第一个类名为item的子元素? Apr 05, 2025 pm 11:24 PM

在元素个数不固定的情况下如何通过CSS选择第一个指定类名的子元素在处理HTML结构时,常常会遇到元素个数不�...

为什么Flex布局中的紫色斜线区域会被误认为是'溢出空间”? 为什么Flex布局中的紫色斜线区域会被误认为是'溢出空间”? Apr 05, 2025 pm 05:51 PM

关于Flex布局中紫色斜线区域的疑问在使用Flex布局时,你可能会遇到一些令人困惑的现象,比如在开发者工具(d...

使Sass更快的概念证明 使Sass更快的概念证明 Apr 16, 2025 am 10:38 AM

在一个新项目开始时,Sass汇编发生在眼睛的眨眼中。感觉很棒,尤其是当它与browsersync配对时,它重新加载

在前端开发中,如何使用CSS和JavaScript实现类似Windows 10设置界面的探照灯效果? 在前端开发中,如何使用CSS和JavaScript实现类似Windows 10设置界面的探照灯效果? Apr 05, 2025 pm 10:21 PM

在前端开发中如何实现类似Windows...

我们如何创建一个在SVG中生成格子呢模式的静态站点 我们如何创建一个在SVG中生成格子呢模式的静态站点 Apr 09, 2025 am 11:29 AM

格子呢是一块图案布,通常与苏格兰有关,尤其是他们时尚的苏格兰语。在Tar​​tanify.com上,我们收集了5,000多个格子呢

See all articles