node操作文件夹复制与删除
文章目录
- 前言
- 文件夹复制思路
- 目标文件夹不存在
- 目标文件夹已存在
- 清空文件夹内容
- 删除所有空文件夹(包括目标文件夹)
- 总结
前言
webpack工具在打包前端文件时,比如打出的包为dist。cleanWebpackPlugin
插件的作用是清除上一次打包的dist文件夹,copyWebpackPlugin
插件的作用是将静态文件夹中的文件复制到dist文件中。
我想使用node的文件操作符fs和路径path,尝试实现简单版的这一个功能,主要就是文件夹的复制与删除操作。
文件夹复制思路
文件夹复制主要有以下思路:
- 判断源文件路径是否存在
- 判断目标文件路径是否存在
- 读取源文件夹
- 创建目标文件夹
- 复制文件
目标文件夹不存在
本文首先考虑目标文件夹不存在的情况。源文件夹如果不存在,给一个提示并终止流程;源文件夹存在按正常流程走,很简单。
const fs = require('fs')
const path = require('path')const srcDir = process.argv[2]
const destDir = process.argv[3]
const srcPath = path.resolve(__dirname,srcDir)
const destPath = path.resolve(__dirname,destDir)function copy(src, dest) {if (!fs.existsSync(src)) {console.log(`${srcDir}文件信息不存在`);return}if (fs.existsSync(dest)) {// 处理目标文件夹已经存在的流程,这里先不写} else {fs.mkdir(dest, (err) => {const srcFiles = fs.readdirSync(src)for (const file of srcFiles) {const srcFile = path.resolve(src, file)const destFile = path.resolve(dest, file)if (fs.lstatSync(srcFile).isDirectory()) {copy(srcFile, destFile)} else {fs.copyFileSync(srcFile, destFile)}}})}
}
目标文件夹已存在
当进行文件夹复制时,发现目标文件夹dist已经存在了,此时一定要先删除掉dist文件夹。因为这个文件夹是上次打包的产物。
但是当文件夹中有文件内容时无法直接删除,必须先将里面的文件全部删除,才能删除此文件夹。
所以当目标文件夹已经存在时的复制思路如下:
- 清空当前路径下的所有文件夹的内容
- 删除当前路径下的所有空文件夹(包括当前文件夹)
- 再重新开始复制
if (fs.existsSync(dest)) {/*删除当前文件夹,文件夹中有内容时无法直接删除*/empty(dest) // 清空当前路径下的所有文件夹的内容emptyDir(dest) // 删除当前路径下的所有空文件夹(包括当前文件夹)copy(src, dest) // 再次进行复制} else { // ........}
清空文件夹内容
function empty(dest) {const destFiles = fs.readdirSync(dest) for (const file of destFiles) {const destFile = path.resolve(dest, file)if (fs.lstatSync(destFile).isDirectory()) {empty(destFile)} else {fs.unlinkSync(destFile)}}
}
删除所有空文件夹(包括目标文件夹)
function emptyDir(dest) {const destFiles = fs.readdirSync(dest) if (destFiles.length === 0) {fs.rmdirSync(dest)} else {for (const file of destFiles) {const destFile = path.resolve(dest, file)emptyDir(destFile)}fs.rmdirSync(dest)}
}
总结
文件夹的复制与删除之类的操作不难,都是调nodejs中内置的方法,可能对某些文件操作符方法不理解其意思,去node官网看一下就行了,或者去我的github仓库中看一下,我也写了一些注释。
node操作文件夹复制与删除相关推荐
- Python实现文件夹复制操作
Python实现文件夹复制操作 文件夹复制是日常开发中不可避免的需求,本文将为大家介绍如何使用Python实现文件夹复制操作. 在Python中,可以使用shutil模块来实现文件和文件夹的复制操作. ...
- 监控WIN2003文件服务器上的文件夹和文件的复制、删除
监控WIN2003文件服务器上的文件夹和文件的复制.删除.比如是哪个域用户复制了或是哪个域用户删除了文件和文件夹.目的:文件服务器里的公共文件夹缺少访问行为监控,误删或故意删除可能会造成数据丢失.文件 ...
- Python标准库shutil的使用( 文件复制删除、文件夹复制删除、压缩包 压缩解压处理模块)
常用函数组合(持续更新) ** shutil模块的常见函数列表 复制类 shutil.copy(src, dst):将文件src复制至dst.dst可以是个目录,会在该目录下创建与src同名的文件,若 ...
- python删除某个文件夹_Python 实现删除某路径下文件及文件夹
Python 实现删除某路径下文件及文件夹的脚本 #!/usr/bin/env python import os import shutil delList = [] delDir = "/ ...
- VB 将文件夹复制到指定目录
Set fso = CreateObject("Scripting.FileSystemObject") fso.CopyFolder "C:\mp3", &q ...
- VisualDiffer for mac 1.6.6 文件夹视图对比文件删除
https://www.macpeers.com/24/24995.html https://www.macpeers.com/24/24995.html https://www.macpeers.c ...
- java 自动删除文件夹,定时删除文件及文件夹 java 定时删除文件夹内所有文件
如何定时删除电脑里某个文件夹里的东西 例如我要删除C:\Program Files\大话西游OnlineII\D3DX9_43.dll编写个代在记事本创建一个bat小脚本,输入@echo offdel ...
- Java File类应用:递归遍历文件夹和递归删除文件
要求: 1)采用递归遍历文件夹下的所有文件,包括子文件夹下的文件 2)采用递归删除文件下的所有文件 注意: 以下递归删除文件的方法,只能删除文件,所有的文件夹都还会存在若要删除正文文件夹,可以在递归删 ...
- 计算机页面里的坚果云删不了怎么回事,我的坚果云文件夹为什么无法删除
满意答案 老720802毛 2019.08.09 采纳率:55% 等级:8 已帮助:1211人 出现电脑里坚果云文件夹图标不能删除的情况,大多数是杀毒软件或其他原因,坚果云的卸载程序没有权限清理 ...
最新文章
- 英语模板末尾【希望可以记着】
- 《实施Cisco统一通信管理器(CIPT1)》——2.2 CUCM:单站点部署模型
- YII 测试环境搭建
- centos安装python3_在CentOS8 上安装Python3
- 负载均衡策略_负载均衡策略
- PrimerCH3字符串,向量,迭代器,数组
- 洛谷 P1615 西游记公司
- different way to retrieve SAP UI5 manifest
- c++调用Libsvm
- Android setBackgroundResource和setBackgroundDrawable和用法
- 人的手臂的自由度的数目以及六自由度机械臂的限制
- 5G完整标准出台,产业应用爆发在即,抢先规划势在必行
- 大数据分析四大分析要素
- 准备 macvlan 环境 - 每天5分钟玩转 Docker 容器技术(54)
- 【历史上的今天】11 月 22 日:PHP 创始人诞生;2020 年图灵奖得主出生;IE 2.0 发布
- DOM操作简易年历案例
- 前台获取model中的值,json数据,json字符串,双引号变为 ‘ quto;‘
- JavaScript点击图片加上红色边框
- 汽车嵌入式软件自动化测试的方法及推荐工具
- 基于MATLAB的计算机视觉与深度学习实战