复制文件
使用 fs.copyFileSync
方法,参数分别是新旧 path,需要保证目录存在,不会自动创建文件夹
复制文件夹
读取文件夹下所有文件,如果是文件类型直接复制,如果是文件夹则继续递归
javascript
const { join } = require('path')
const fs = require('fs')
function copyDirFile(filePath, newPath) {
fs.readdir(filePath, (err, files) => {
if (err) return console.warn(err)
files.forEach(filename => {
//获取当前文件的绝对路径
const fileDir = join(filePath, filename);
//根据文件路径获取文件信息,返回一个fs.Stats对象
fs.stat(fileDir, (err, stats) => {
if (err) return console.warn('获取文件stats失败')
const isFile = stats.isFile()
const isDir = stats.isDirectory()
if (isDir) {
// 首先创建对应文件夹
fs.mkdirSync(path.resolve(newPath, filename))
//递归,并将文件夹名拼接到 newPath 后作为下一层的 newPath
copyDirFile(fileDir, path.resolve(newPath, filename))
} else if (isFile) {
try {
fs.copyFileSync(fileDir, path.resolve(newPath, filename)) // copy 文件
fs.rmSync(fileDir)
} catch (err) {
console.log(err)
}
}
})
})
})
}
使用操作系统的命令
通过 child_process
的 exec
方法执行复制命令
新语法 fs.cp
使用 fs.cpSync
,参数分别为原始和目标(目录/文件)(异步方法去掉 Sync )
既可以复制文件,又可以复制目录
目录不存在时可自动创建(无论几级目录)
注意
复制目录时,
options
参数必须配置recursive: true
保证
node
版本在16.7.0
及以上
0