位置: 编程技术 - 正文

Node.js本地文件操作之文件拷贝与目录遍历的方法(node运行js文件)

编辑:rootadmin

推荐整理分享Node.js本地文件操作之文件拷贝与目录遍历的方法(node运行js文件),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:nodejs 文件,nodejs本地存储,node.js 文件下载,nodejs下载文件到本地,node运行js文件,node.js 文件操作,nodejs打开本地文件,nodejs 文件,内容如对您有帮助,希望把文章链接给更多的朋友!

文件拷贝NodeJS 提供了基本的文件操作 API,但是像文件拷贝这种高级功能就没有提供,因此我们先拿文件拷贝程序练手。与 copy 命令类似,我们的程序需要能接受源文件路径与目标文件路径两个参数。

小文件拷贝我们使用 NodeJS 内置的 fs 模块简单实现这个程序如下。

以上程序使用 fs.readFileSync 从源路径读取文件内容,并使用 fs.writeFileSync 将文件内容写入目标路径。

豆知识: process 是一个全局变量,可通过 process.argv 获得命令行参数。由于 argv[0] 固定等于 NodeJS 执行程序的绝对路径,argv[1] 固定等于主模块的绝对路径,因此第一个命令行参数从 argv[2] 这个位置开始。

大文件拷贝上边的程序拷贝一些小文件没啥问题,但这种一次性把所有文件内容都读取到内存中后再一次性写入磁盘的方式不适合拷贝大文件,内存会爆仓。对于大文件,我们只能读一点写一点,直到完成拷贝。因此上边的程序需要改造如下。

以上程序使用 fs.createReadStream 创建了一个源文件的只读数据流,并使用 fs.createWriteStream 创建了一个目标文件的只写数据流,并且用 pipe 方法把两个数据流连接了起来。连接起来后发生的事情,说得抽象点的话,水顺着水管从一个桶流到了另一个桶。

遍历目录

遍历目录是操作文件时的一个常见需求。比如写一个程序,需要找到并处理指定目录下的所有JS文件时,就需要遍历整个目录。

Node.js本地文件操作之文件拷贝与目录遍历的方法(node运行js文件)

递归算法遍历目录时一般使用递归算法,否则就难以编写出简洁的代码。递归算法与数学归纳法类似,通过不断缩小问题的规模来解决问题。以下示例说明了这种方法。

上边的函数用于计算 N 的阶乘(N!)。可以看到,当 N 大于 1 时,问题简化为计算 N 乘以 N-1 的阶乘。当 N 等于 1 时,问题达到最小规模,不需要再简化,因此直接返回 1。

陷阱: 使用递归算法编写的代码虽然简洁,但由于每递归一次就产生一次函数调用,在需要优先考虑性能时,需要把递归算法转换为循环算法,以减少函数调用次数。

遍历算法目录是一个树状结构,在遍历时一般使用深度优先+先序遍历算法。深度优先,意味着到达一个节点后,首先接着遍历子节点而不是邻居节点。先序遍历,意味着首次到达了某节点就算遍历完成,而不是最后一次返回某节点才算数。因此使用这种遍历方式时,下边这棵树的遍历顺序是 A > B > D > E > C > F。

同步遍历了解了必要的算法后,我们可以简单地实现以下目录遍历函数。

可以看到,该函数以某个目录作为遍历的起点。遇到一个子目录时,就先接着遍历子目录。遇到一个文件时,就把文件的绝对路径传给回调函数。回调函数拿到文件路径后,就可以做各种判断和处理。因此假设有以下目录:

使用以下代码遍历该目录时,得到的输入如下。

异步遍历如果读取目录或读取文件状态时使用的是异步API,目录遍历函数实现起来会有些复杂,但原理完全相同。travel函数的异步版本如下。

这里不详细介绍异步遍历函数的编写技巧,在后续章节中会详细介绍这个。总之我们可以看到异步编程还是蛮复杂的。

使用Node.js处理前端代码文件的编码问题 使用NodeJS编写前端工具时,操作得最多的是文本文件,因此也就涉及到了文件编码的处理问题。我们常用的文本编码有UTF8和GBK两种,并且UTF8文件还可能

剖析Node.js异步编程中的回调与代码设计模式 NodeJS最大的卖点——事件机制和异步IO,对开发者并不是透明的。开发者需要按异步方式编写代码才用得上这个卖点,而这一点也遭到了一些NodeJS反对者

解析Node.js异常处理中domain模块的使用方法 NodeJS提供了domain模块,可以简化异步代码的异常处理。在介绍该模块之前,我们需要首先理解域的概念。简单的讲,一个域就是一个JS运行环境,在一个

标签: node运行js文件

本文链接地址:https://www.jiuchutong.com/biancheng/370671.html 转载请保留说明!

上一篇:详解Node.js包的工程目录与NPM包管理器的使用(node·js)

下一篇:使用Node.js处理前端代码文件的编码问题(node.js怎么用)

  • 个税手续费返还要交企业所得税吗
  • 工业产值是含税价格吗
  • 认缴制的注册资本实缴时存哪里
  • 建筑业收到预收款预缴增值税
  • 专用发票不抵扣怎么做账
  • 团建费用途
  • 2019最新运输发票样本
  • 购原材料红字发票会计分录怎么写?
  • 计提工资数大于实际支付数怎么办?
  • 企业筹办期间,发生亏损,应该计算为亏损年度
  • 营改增后还要交企业所得税吗
  • 存货的进项税要计入成本吗
  • 大众创业的后果
  • 固定资产折旧税务处理
  • 不征收增值税项目进项税额可以抵扣吗
  • 货物收到钱已付 发票未收到怎么做账
  • 审计调整分录如何处理
  • 金蝶如何结转折旧费用的操作步骤
  • 财务报表申报错了怎么撤销
  • 企业借款利息收入企业所得税
  • win11 zen2
  • 材料按计划成本计价下,外购材料结算
  • 应用程序错误0x000000
  • 32位升级64位系统教程
  • 抵扣后增值税税率
  • 手机怎么设置无信号
  • 德纳里山
  • 财务运作规律
  • 资产负债表左方烈士的资产按什么排列
  • PHP:JDToJulian()的用法_日历函数
  • 完美替身好看吗
  • Waterfalls at the source of the Mundo River, Sierra de Riopar, Albacete, Spain (© Westend61/Getty Images)
  • vue3框架的优点
  • 关于灵活就业人员待遇享受政策
  • 金蝶专业版怎么用
  • 外贸企业购货合同要交印花税吗
  • 多模态特征融合pytorch
  • pinf命令
  • rsync连接
  • 飞机票电子发票能报销吗
  • 土地使用税和房产税怎么申报
  • 织梦相关文章调用
  • 小微企业材料
  • 个税显示退税成功但是没有收到钱
  • 年金保险是指什么保险
  • 商品流通企业采购费用
  • 跨年发票能不能用
  • 报销差旅费会计分录退回现金
  • 对方公司已注销还能起诉吗
  • 已抵扣发票红冲做进项税转出
  • 完税证明和纳税证明一样吗
  • 确认收入未开发票
  • 购房契税如何入账
  • 发票金额和付款金额差几毛钱
  • 社保调低,上半年多缴的怎么办
  • 车票如何抵扣增值税
  • 用友t3月末转账流程图
  • 出现亏损
  • mysqlvarchar汉字
  • centos添加自启动
  • 文件选项夹在哪里
  • WIN10怎么卸载更新
  • win8系统修复在哪里
  • 网页css加载失败
  • jquery如何实现双向绑定
  • unity开发手游
  • 使用Raygun来自动追踪AngularJS中的异常
  • 总体把握是什么意思
  • unitytest
  • 推荐javascript教程
  • 基于JQuery的$.ajax方法进行异步请求导致页面闪烁的解决办法
  • jquery22
  • 买药开税票多少税率
  • 云南新农合网上怎么交
  • 个体户税务三方协议必须签吗
  • 技术转让条件
  • 灯具维修发票明细
  • 上海嘉定南翔房子
  • 租赁合同备案后可以更改吗
  • 东莞国税稽查分局局长
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设