本文首发于公众号:符合预期的CoyPan

写在前面

最新版的Chrome(Chrome 83, 须要开启权限)支持直接读写本地文件了。javascript

开启方法:Chrome浏览器升级到83版本以上;访问chrome://flags/,开启 Native File System API 选项

当前如何读写本地文件

目前最多见的读取本地文件方法:html

一、使用input标签获取文件File对象。java

二、使用FileReader读取文件。web

var reader = new FileReader();

reader.onload = function (event) {

// event.target.result就是读取的内容

...

};

// 这里的file为File对象实例

reader.readAsText(file);

// reader.readAsDataURL(file);

// reader.readAsArrayBuffer(file);

写文件方法:chrome

很遗憾,如今没有直接写文件到本地的方法。不过,大概能够用下面的方法来实现:api

var textFileAsBlob = new Blob(['hello word'], {type:'text/plain'});

var downloadLink = document.createElement("a");

downloadLink.download = 'test.txt';

downloadLink.href = window.URL.createObjectURL(textFileAsBlob);

downloadLink.click();

最新的Chrome浏览器下,如何读写文件

读文件浏览器

使用window.chooseFileSystemEntries这个api。须要注意的是,调用这个api,必须由用户的操做触发,好比点击等。app

// 文件句柄

let fileHandle;

button.addEventListener('click', async (e) => {

fileHandle = await window.chooseFileSystemEntries();

console.log(fileHandle);

});

调用api后,会弹出文件窗口,用户选择文件后,就能够拿到文件的句柄了。async

接着,调用句柄的方法,就能够拿到文件内容了。spa

let fileHandle;

button.addEventListener('click', async (e) => {

fileHandle = await window.chooseFileSystemEntries();

const file = await globalFileHandle.getFile();

const contents = await file.text(); // 这里的方法还有:slice(), stream(), arrayBuffer()

});

写文件

写文件,分红两种状况,一种是直接写入原文件,一种是写入一个新文件。

写入原文件,咱们只须要拿到原文件的句柄,调用句柄的方法就能够了。

const writable = await fileHandle.createWritable();

await writable.write('new content');

await writable.close();

写入新文件,首先须要新建一个文件,依然是调用window.chooseFileSystemEntries这个api,不过此次须要传入一些参数。

button.addEventListener('click', async function() {

const opts = {

type: 'save-file',

accepts: [{

description: 'Text file',

extensions: ['txt'],

mimeTypes: ['text/plain'],

}]

};

// 新建文件的句柄

const fileHandle = await window.chooseFileSystemEntries(opts);

...

});

接着,再按照前文的方法,写入内容便可。

示例Demo

新的文件Api十分方便。我简单写了一个demo,在浏览器编辑本地文件。

Demo体验地址和代码在这里(请使用最新版的桌面Chrome浏览器访问,且开启文件读写权限):

写在后面

Chrome这一波更新,你怎么看?web app ?web os?

chrome html 读写文件路径,Chrome浏览器支持直接读写本地文件了相关推荐

  1. 如何布置电脑文件夹、电脑文件路径、浏览器收藏夹

    如何布置电脑文件夹.电脑文件路径.浏览器收藏夹 浏览器收藏夹 电脑文件夹 = 电脑文件路径 浏览器收藏夹 好的,我会为您增加收藏夹的深度,以更好地满足您的需求.以下是基于您之前提供的信息,在不丢失任何 ...

  2. R语言使用fs包的path_wd函数基于自定义文件路径规则,批量生成多个文件或者文件夹对应的绝对(absolute)文件路径(constructs absolute path)

    R语言使用fs包的path_wd函数基于自定义文件路径规则,批量生成多个文件或者文件夹对应的绝对(absolute)文件路径(constructs an absolute path from the ...

  3. 方正高拍仪文件上传到服务器,高拍仪拍摄文件后如何进行文字识别?本地文件能否导入高拍仪进行识别?...

    原标题:高拍仪拍摄文件后如何进行文字识别?本地文件能否导入高拍仪进行识别? 日常办公和学习中,常常有许多资料需要进行二次编辑,但受限于文件是纸质文档或者图片文件,无法直接进行二次编辑,只能把相关信息手 ...

  4. python读取文件路径乱码 linux_Python之pandas读写文件乱码的解决方法

    Python之pandas读写文件乱码的解决方法 python读写文件有时候会出现 'XXX'编码不能打开XXX什么的,用记事本打开要读取的文件,另存为UTF-8编码,然后再用py去读应该可以了.如果 ...

  5. 实现浏览器支持各种视频格式文件播放

    背景 浏览器支持的视频格式有限.而ffmpeg有很强的格式转换功能.那我们能不能通过ffmpeg把不支持的视频转成浏览器可以支持的视频呢? 方案 要实现以上方案要解决几个问题: 如何实时获取ffmpe ...

  6. python读取文件路径格式_Python学习笔记读写文件之文件与文件路径

    随笔记录方便自己和同路人查阅. #------------------------------------------------我是可耻的分割线--------------------------- ...

  7. 数据库服务器文件路径,如何在服务器中找到数据库文件路径

    如何在服务器中找到数据库文件路径 内容精选 换一换 ModelArts Web训练需要在昇腾AI处理器上调试基本没问题后,在ModelArts Web页面上部署便可直接训练.但如果前期训练代码没有调试 ...

  8. shell运行html文件路径,PowerShell文件系统(二)访问文件和目录

    PowerShell 文件系统系列文章: 使用Get-ChildItem列出目录的内容.预定义的别名为Dir和ls,Get-ChildItem执行了一些很重要的任务: 显示目录内容 递归地搜索文件系统 ...

  9. Linux系统文件目录指令详解——文件路径查看、创建和删除目录、文件移动与重命名、文件查看

    文件目录指令详解 pwd 指令:查看路径 基本语法 应用实例 ls 指令:显示当前目录所在的文件和目录 基本语法 常用选项 应用实例 cd 指令:切换目录 基本语法 如何理解绝对路径和相对路径 常用参 ...

最新文章

  1. Load和Initialize往死了问是一种怎样的体验?
  2. 2016-7-4收藏夹接口
  3. Open 语法的使用
  4. 求水仙花_500万株水仙花争相绽放,这个日本小岛人少冬天还能看花!| 日本淡路岛...
  5. c语言定义数组变量初始化为0,c语言数组初始化——int a[N] = {0};
  6. 华人微型计算机之父,计算机之父是谁?
  7. java 对数取反_如何理解「对数」?
  8. 用上帝视角来看待组件的设计模式
  9. 模拟电子技术基础简明课程(第三版)思维导图
  10. lingo与matlab转换,请教lingo与matlab
  11. Access2016学习9
  12. 记录“麻辣香锅”病毒处理过程
  13. u盘文件意外删除怎么恢复,不小心删了u盘的文件怎么办
  14. java钝化_javaEE之--------------session的活化与钝化
  15. iPhone屏幕分辨率
  16. iOS多线程——GCD底层探索中(dispatch_async与dispatch_sync源码)
  17. 前端三件套之CSS(二)
  18. 炸裂!PDF转Word彻底告别收费时代,这个OCR开源项目要逆天!
  19. 操作系统笔记——储存器管理、文件系统、设备管理
  20. 皮肤电研究: 情绪识别的特征提取与选择

热门文章

  1. JavaScript基础之Number对象和Math对象
  2. MDOP套装之app-v安装使用及功能说明
  3. JSP中 input type 用法
  4. Linux下如何同时启动多个Tomcat服务器
  5. hdfs java读写hdfs demo
  6. 超链接跳转到action使用哪个方法_管道疏通剂哪个牌子好 管道疏通机使用方法有哪些...
  7. 陶晶驰stm32_陶晶驰串口屏学习日记(1)
  8. 列主元消去法例题详解_高斯列主元消元法解方程组的步骤
  9. gcc -pthread_错误-在GCC Linux中使用C程序未定义对'pthread_create'的引用
  10. 本地 服务器 文件传输,本地服务器文件传输