Node.js复制/删除服务器端文件到指定目录文件夹下,并且预判是否存在该目录,如果没有,则递归创建该文件夹目录
生活随笔
收集整理的這篇文章主要介紹了
Node.js复制/删除服务器端文件到指定目录文件夹下,并且预判是否存在该目录,如果没有,则递归创建该文件夹目录
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
?
注意,前情提示:
本代碼基于《Node.js(nodejs)對本地JSON文件進行增、刪、改、查操作(輕車熟路)》
傳送門Node.js(nodejs)對本地JSON文件進行增、刪、改、查操作(輕車熟路)_你摯愛的強哥?給你發來1條消息?-CSDN博客?
在/api/demo/文件夾下面創建copyFileOrFolder.js和deleteFileOrFolder.js
copyFileOrFolder.js代碼內容?
const $g = global.SG.$g, fs = global.SG.fs, router = global.SG.router, path = global.SG.path;
module.exports = global.SG.router;const copyFileOrFolerPath = "./json/demo/demo.json";//被復制的文件路徑
const pasteFileOrFolerPath = "./json/demoBak/demoBak.json";//粘貼文件路徑
// const copyFileOrFolerPath = "./json";//被復制的文件夾路徑
// const pasteFileOrFolerPath = "./temp";//粘貼文件夾路徑
const copyDir = (src, dst) => {//讀取目錄中的所有文件/目錄fs.readdir(src, (err, paths) => {if (err) throw err;paths.forEach(path => {const _src = src + "/" + path, _dst = dst + "/" + path;let readable, writable;fs.stat(_src, (err, st) => {if (err) throw err;if (st.isFile()) {//是文件readable = fs.createReadStream(_src);//創建讀取流writable = fs.createWriteStream(_dst);//創建寫入流readable.pipe(writable);//通過管道來傳輸流} else {//是文件夾copyFolder(_src, _dst);//如果是目錄則遞歸調用自身}});});});
};//復制文件夾
const copyFolder = (src, dst) => fs.existsSync(dst) ? copyDir(src, dst) : fs.mkdir(dst, () => copyDir(src, dst));const mkdirs = $g.dir.mkdirsByFilePath;//遞歸創建文件夾目錄(基于文件路徑)const resJson = (req, res) => {fs.copyFile(copyFileOrFolerPath, pasteFileOrFolerPath, err => {$g.json.res(req, res, `復制${copyFileOrFolerPath}${err ? "失敗" : "成功"}`, {err, copyFileOrFolerPath, pasteFileOrFolerPath}, true);});
};//復制并且粘貼(覆蓋無提示)文件(all方法支持POST、GET、PUT、PATCH、DELETE傳參方式)
router.all("/demo/copyFileOrFolder", (req, res) => {if (fs.statSync(copyFileOrFolerPath).isFile()) {//是文件mkdirs(pasteFileOrFolerPath, () => resJson(req, res));//復制文件} else {//是文件夾copyFolder(copyFileOrFolerPath, pasteFileOrFolerPath);//復制文件夾$g.json.res(req, res, `復制${copyFileOrFolerPath}成功`, {err: null, copyFileOrFolerPath, pasteFileOrFolerPath}, true);}
});
?deleteFileOrFolder.js代碼內容?
const $g = global.SG.$g, fs = global.SG.fs, router = global.SG.router, path = global.SG.path;
module.exports = global.SG.router;// const deleteFileOrFolderPath = "./json/demoBak/demoBak.json";//被刪除文件路徑
const deleteFileOrFolderPath = "./json/demoBak";//被刪除文件夾路徑
const deleteFileOrFolderRecursive = (url, callback) => {//判斷給定的路徑是否存在fs.exists(url, exists => {if (exists) {if (fs.statSync(url).isFile()) {//是文件fs.unlink(url, err => callback(err));} else {//是文件夾let __del = (url, callback) => {let files = [];//判斷給定的路徑是否存在files = fs.readdirSync(url);//返回文件和子目錄的數組files.forEach((file, index) => {let curPath = path.join(url, file);if (fs.statSync(curPath).isDirectory()) {__del(curPath);//fs.statSync同步讀取文件夾文件,如果是文件夾,在重復觸發函數} else {fs.unlinkSync(curPath);}});fs.rmdirSync(url);//清除文件夾callback && callback();};__del(url, callback);}} else {callback("親,您提供的是一個子虛烏有的路徑!");}});
};const resJson = (req, res, err) => $g.json.res(req, res, `刪除${deleteFileOrFolderPath}${err ? "失敗" : "成功"}`, {err, deleteFileOrFolderPath}, !err);//刪除文件or文件夾(覆蓋無提示)文件(all方法支持POST、GET、PUT、PATCH、DELETE傳參方式)
router.all("/demo/deleteFileOrFolder", (req, res) => deleteFileOrFolderRecursive(deleteFileOrFolderPath, err => resJson(req, res, err)));
在index.js最后一行加入
app.use(API_PATH, require(`.${API_PATH}/demo/copyFileOrFolder`));//復制文件or文件夾
app.use(API_PATH, require(`.${API_PATH}/demo/deleteFileOrFolder`));//刪除文件or文件夾
運行
node index
總結
以上是生活随笔為你收集整理的Node.js复制/删除服务器端文件到指定目录文件夹下,并且预判是否存在该目录,如果没有,则递归创建该文件夹目录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 鑫哥新作品《工资呀》
- 下一篇: Node.js实现服务器端生成Excel