1.流式读取:

const readstream = fs.createReadStream('test.mp4');let i = 0;console.time('readtime');readstream.on('readable', () => {let chunk = readstream.read(8192 * 1024);while (null !== chunk) {console.log(`file${++i} md5: ${md5(chunk)}`);chunk = readstream.read(8192 * 1024);}});readstream.on('close', () => {console.timeEnd('readtime');});

2.同步读取

 const partialFSReadSync = (path: string, start: number, end: number) => {if (start < 0 || end < 0 || end < start || end - start > 0x3fffffff) {throw new Error('bad start, end');}if (end - start === 0) {return new Buffer(0);}const buf = new Buffer(end - start);const fd = fs.openSync(path, 'r');fs.readSync(fd, buf, 0, end - start, start);fs.closeSync(fd);return buf;};const stat = fs.statSync('test.mp4');const size = stat.size;let currentId = 0;let start = 0;let end = 0;console.time('readtime');while (true) {if (end >= size) { break; }start = currentId * 8192 * 1024;end = (currentId + 1) * 8192 * 1024;const chunk = partialFSReadSync('test.mp4', start, end);console.log(`file${++currentId} md5: ${md5(chunk)}`);}console.timeEnd('readtime');

3.异步读取

 let currentId = 0;let start = true;console.time('readtime');fs.open('test.mp4', 'r', (err, fd) => {while (start) {const buff = Buffer.alloc(8192 * 1024);fs.read(fd, buff, 0, buff.length, null, (err, bytesRead, chunk) => {if (bytesRead) {console.log(`file${++currentId} md5: ${md5(chunk.slice(0, bytesRead))}`);} else {start = false;console.timeEnd('readtime');fs.closeSync(fd);}});}});

4.异步读取promise版

 let currentId = 0;console.time('readtime');const FileHandle = await fsPromise.open('mojito.mp4', 'r');while (true) {const { bytesRead, buffer } = await FileHandle.read(Buffer.alloc(8192 * 1024), 0, 8192 * 1024, null);if (bytesRead) {console.log(`md5 file ${++currentId}:${md5(buffer.slice(0, bytesRead))}`);} else {break;}}await FileHandle.close();console.timeEnd('readtime');

效率上:3>1>2

nodejs按固定大小读取文件相关推荐

  1. java实现把一个大文件切割成N个固定大小的文件

    这个好像是我一年前去面试时的一道面试题,分享一下!考 java I/O 的! //java实现把一个大文件切割成N个固定大小的文件 package com.johnny.test; import ja ...

  2. linux生成固定大小的文件夹的实现

    1.dd生成一个固定大小的文件 dd if=/dev/zero of=test.img bs=1M count=100 2.关联到循环驱动设备 losetup /dev/loop0 test.img ...

  3. 使用dd命令制作固定大小的文件

    如果你想生成固定大小的文件可以试试dd命令: dd if=/dev/zero of=./test bs=1k count=1024 此条命令会在当前目录下生成1k*1024=1M大小的文件,文件名为t ...

  4. 如何把一个文件压缩成几个固定大小的文件及解压缩

    简述: 本文简单介绍了WinRAR如何把一个文件压缩成几个固定大小的文件以及如何解压这几个文件. 1.压缩 1 > 鼠标选中待压缩文件-右键-添加到压缩文件. 2 > 在弹出的" ...

  5. linux 删除小于、大于固定大小的文件

    通过find命令可以找到对应大小的文件, 找到当前目录下小于5k的文件(包含子文件夹内的文件) find ./ -size -5k 找到当前目录下大于5k的文件 find ./ -size +5k 找 ...

  6. node的fs读取html文件报错,node.js使用fs读取文件出错的解决方案

    今天配接口,使用fs模块读取json出现了错误'no such file or directory',然后经查终于解决,特此记录. 使用nodejs的fs模块读取文件时习惯用相对路径,但是运行的时候出 ...

  7. 《Python Cookbook 3rd》笔记(5.8):固定大小记录的文件迭代

    固定大小记录的文件迭代 问题 你想在一个固定长度记录或者数据块的集合上迭代,而不是在一个文件中一行一行的迭代. 解法 通过下面这个小技巧使用 iter 和 functools.partial() 函数 ...

  8. node 修改html文件路径,好程序员前端教程-nodejs如何读取文件夹目录的内容

    好程序员前端教程-nodejs如何读取文件夹目录的内容? 首先,nodejs中文件,目录的操作,我们对fs文件系统分为两类操作,第一类是xxx方法,第二类是xxxSync方法.所有的fs操作几乎都是这 ...

  9. Nodejs中搭建一个静态Web服务器,通过读取文件获取响应类型

    场景 Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档,也可以放置网站文件让全世界浏览,还可以放置数据文件,让全世界下载.目前最主流的Web服务 ...

最新文章

  1. SQLServer之创建分布式事务
  2. check_traffic.sh监控格式为Hex-STRING的解决办法
  3. 8.2 matlab曲线对象和曲面对象(曲线对象、曲面对象、光照处理、图形对象的反射特性)
  4. 如何在CentOS 7 / RHEL 7 运行单用户模式进行root的密码重置
  5. 将内存单元中小写字符改成大写字符
  6. 11尺寸长宽 iphone_弱电工程LED显示屏尺寸规格及计算方法
  7. 四大组件之BroadcastReceiver
  8. 上探式提额与倒逼式提额—风控调额就该这么做
  9. 客户机不能看到分配的dhcp_交换机安全-DHCP欺骗
  10. 机器学习和AI的区别是什么?| 今日吐槽
  11. 前端可视化的四种方式
  12. 一起学爬虫(Python) — 03
  13. ios 博客及论坛整理
  14. 解决No instances available for XXX
  15. Git正解 脱水版 【8. 定制Git】
  16. 美颜SDK免费版怎么样?应该如何选择美颜SDK?
  17. 实现1V1音视频实时互动直播系统 十二、第三节 直播系统中的信令及其逻辑关系
  18. 安氏书店管理软件——您的首选
  19. 《ZigBee实战演练》
  20. android代码里切换横竖屏,Android横竖屏切换

热门文章

  1. 常用正则表达式大全,手机、电话、邮箱、身份证(最严格的验证)、IP地址、网址、日期等,一般前台js验证,来这里就够了...
  2. 电子招标采购系统源码 项目说明 开发类型
  3. @Pointcut的使用
  4. Accessdiver使用指南
  5. 01 -- 机器学习入门
  6. OpenShift 4 - 有关 Operator 相关概念和运维操作
  7. 一文带你秒懂 字节序(byte order),比特序(bit order),位域(bit field)
  8. 苹果系统安装python环境_mac下python相关环境搭建(python开发必经之路之mac快速上手)...
  9. 企业内部岗位晋升简历PPT模板
  10. 瑞萨RL78系列单片机划分ROM、RAM区域进行合作开发