返回顶部
首页 > 资讯 > 前端开发 > node.js >详解Nodejs 通过 fs.createWriteStream 保存文件
  • 253
分享到

详解Nodejs 通过 fs.createWriteStream 保存文件

详解保存文件fs 2022-06-04 17:06:29 253人浏览 八月长安
摘要

工作中难免会遇到处理大文件的时候,有这种stream的处理方式,就不需要一次处理太大的文件,从而导致内存不够用,或者内存占用太多。 fs.createWriteStream 似乎不会自己创建不存在的文件夹,

工作中难免会遇到处理大文件的时候,有这种stream的处理方式,就不需要一次处理太大的文件,从而导致内存不够用,或者内存占用太多。

fs.createWriteStream 似乎不会自己创建不存在的文件夹,所以在使用之前需要注意,保存文件的文件夹一定要提前创建。


const path = '/xxxxxx/DDD/';

if (!fs.existsSync(path)) {
 fs.mkdirSync(path);
}

创建完文件夹,我们就可以进行文件添加操作了。我们希望在使用文件添加操作的时候是通过saveFile(filePath, fileData);这样的方式来调用。

这里我采用了Promise的方式,个人比较喜欢这样的方式


 
 static saveFile(filePath, fileData) {
  return new Promise((resolve, reject) => {
   // 块方式写入文件
   const wstream = fs.createWriteStream(filePath);

   wstream.on('open', () => {
    const blockSize = 128;
    const nbBlocks = Math.ceil(fileData.length / (blockSize));
    for (let i = 0; i < nbBlocks; i += 1) {
     const currentBlock = fileData.slice(
      blockSize * i,
      Math.min(blockSize * (i + 1), fileData.length),
     );
     wstream.write(currentBlock);
    }

    wstream.end();
   });
   wstream.on('error', (err) => { reject(err); });
   wstream.on('finish', () => { resolve(true); });
  });
 }

实际调用的时候,如下


try {
 await saveFileWithStream(filePath, fileData); // 这里的fileData是Buffer类型
} catch (err) {
 console.log(err.stack);
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: 详解Nodejs 通过 fs.createWriteStream 保存文件

本文链接: https://lsjlt.com/news/12338.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 详解Nodejs 通过 fs.createWriteStream 保存文件
    工作中难免会遇到处理大文件的时候,有这种stream的处理方式,就不需要一次处理太大的文件,从而导致内存不够用,或者内存占用太多。 fs.createWriteStream 似乎不会自己创建不存在的文件夹,...
    99+
    2022-06-04
    详解 保存文件 fs
  • 实例详解Nodejs 保存 payload 发送过来的文件
    1:接受文件 http://stackoverflow.com/questions/24610996/how-to-get-uploaded-file-in-node-js-express-app-usi...
    99+
    2022-06-04
    详解 实例 文件
  • SpringBoot详细讲解通过自定义classloader加密保护class文件
    目录背景maven插件加密注意事项自定义classloader隐藏classloader被保护class手动加壳总结背景 最近针对公司框架进行关键业务代码进行加密处理,防止通过jd-...
    99+
    2024-04-02
  • 详解Docker在哪里保存日志文件
    目录日志存储在哪里?从容器内的应用程序查看日志查看 Docker 守护进程日志调试大多数 Linux 程序通常涉及检查日志文件,这可能是一个复杂的过程。但是,在 Docker 下的容...
    99+
    2024-04-02
  • python通过http上传文件思路详解
    这里主要是解决multipart/form-data这种格式的文件上传,基本现在http协议上传文件基本上都是通过这种格式上传 1 思路 一般情况下,如果我们往一个地址上传文件,则必...
    99+
    2024-04-02
  • 一文详解golang通过io包进行文件读写
    目录1.io包的读写函数2.io.ioutil包实现读写操作在 golang 语言中,实现io的读与写,只要实现了如下的读写接口即可: // go 1.19/sr...
    99+
    2023-05-17
    golang通过io包文件读写 golang io包文件读写 golang io包
  • 详解nodejs通过代理(proxy)发送http请求(request)
    有可能有这样的需求,需要node作为web服务器通过另外一台http/https代理服务器发http或者https请求,废话不多说直接上代码大家都懂的: var http = require('http...
    99+
    2022-06-04
    详解 nodejs proxy
  • 通过数组给您的文件排序284567详解
    当您使用FILESYSTEMOBJECT对象获得某个目录下的文件列表的时候,你有没有发现无法控制它们的排序方式,比如按照名字排序,按照扩展名排序,按照文件大小排序等等,让我们试着用数...
    99+
    2023-05-20
    asp 数组给您的文件
  • 通过数组给您的文件排序284455详解
    当您使用FILESYSTEMOBJECT对象获得某个目录下的文件列表的时候,你有没有发现无法控制它们的排序方式,比如按照名字排序,按照扩展名排序,按照文件大小排序等等,让我们试着用数...
    99+
    2023-05-20
    asp 数组给您的文件
  • 详解Android文件存储
    摘要 其实安卓文件的操作和java在pc环境下的操作并无二致,之所以需要单独讲解是因为安卓系统提供了不同于pc的访问文件系统根路径的api,同时对一个应用的私有文件做了统一的...
    99+
    2022-06-06
    存储 Android
  • Python通过psd-tools解析PSD文件
    目录特点安装使用1. 命令行2. 操作PSD文件3. 操作使用层4. 将数据导出到 PIL4. 将数据导出到NumPy更多操作1. 操作一个PSD文件2. 操作一个PSD图层前言: ...
    99+
    2024-04-02
  • Mysql文件存储图文详解
    什么是文件系统 我们知道像 InnoDB、MyIASM 这样的存储引擎都是把表存储在磁盘上的(持久化)。当我们想读取数据的时候,这些存储引擎会从文件系统中把数据读出来返回给我们, 当...
    99+
    2024-04-02
  • 详解Android通过修改配置文件设置wifi密码
    详解Android通过修改配置文件设置wifi密码前言:在一些非常规Android设备上,如眼镜/手表,输入wifi密码如同一场灾难。此时可以通过修改配置文件的方法设置wifi的ssid和密码.wifi密码配置文件首先要保证设备已经root...
    99+
    2023-05-31
    android 配置文件 wifi密码
  • 详解Go 语言如何通过测试保证质量
    目录引言单元测试什么是单元测试Go 语言的单元测试单元测试覆盖率基准测试什么是基准测试Go 语言的基准测试计时方法内存统计并发基准测试基准测试实战总结引言 本节带你学习本专栏的第四模...
    99+
    2024-04-02
  • SpringBoot怎么通过自定义classloader加密保护class文件
    今天小编给大家分享一下SpringBoot怎么通过自定义classloader加密保护class文件的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面...
    99+
    2023-06-30
  • 如何通过nodejs服务器读取HTML文件渲染到页面
    这篇文章主要介绍了如何通过nodejs服务器读取HTML文件渲染到页面,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.分别简单实现三个备用...
    99+
    2024-04-02
  • Java通过导出超大Excel文件解决内存溢出问题
    前言 将业务数据导出到Excel表中,导出任务数据量较大时,导出的项目就会内存溢出,本文通过Java操作Poi的SXSSFWorkbook类进行导出,解决内存溢出问题。 1.采用Po...
    99+
    2024-04-02
  • ubuntu如何通过命令解压文件
    在Ubuntu中,可以使用以下命令来解压文件:1. 解压tar.gz文件:```tar -zxvf 文件名.tar.gz```其中,...
    99+
    2023-08-16
    ubuntu
  • Linux上通过SSH挂载远程文件系统方法详解
    SSHFS的特点: 基于FUSE(linux的最佳用户空间文件系统框架) 多线程:在服务器上可以有多个请求 允许大读取(最大64k) 缓存目录内容 步骤1:安装fuse-sshfs 对于centos/rhel用户,fus...
    99+
    2022-06-04
    Linux SSH 远程文件
  • Python保存文件名太长怎么解决
    这篇文章主要讲解了“Python保存文件名太长怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python保存文件名太长怎么解决”吧!保存文件名太长OSError: [Errno 36...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作