nodejs如何將多個目錄文件合并成一個
更新時間:2023年10月27日 09:20:16 作者:不吃魚的貓咪
這篇文章主要介紹了nodejs如何將多個目錄文件合并成一個問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
nodejs多個目錄文件合并成一個
var fs = require('fs'); var baseUrl = './data'; var createJson = './data.json'; fs.readdir(baseUrl, function(err, files) { if (err) { throw err; } var filePath = ''; var fileReadStream; var fileWriteStream = fs.createWriteStream(createJson); createStramFile(); var fileNum = files.length-1; function createStramFile(){ var currentfile = baseUrl+'/' + files.shift(); fileReadStream = fs.createReadStream(currentfile); fileReadStream.pipe(fileWriteStream,{end:false}); fileReadStream.on("end", function() { console.log(currentfile + ' appended'); createStramFile(); }); if (!files.length) { fileWriteStream.end("Done"); console.log('copy Done'); return; } fileWriteStream.on('data',function(chunk){ console.log('copy data'); return chunk+',' }); fileWriteStream.on('close',function(){ console.log(fileNum); if (!fileNum) { roMockJs() } --fileNum; console.log('copy over'); //roMockJs(); }); } });
nodejs將不同文件夾中的視頻整合到一個文件夾中
const fs = require("fs") const path = require("path") main(); function main() { const rootRealPath = path.resolve(__dirname); const newDirName = 'newFile'; // 移動目標(biāo)文件名 const newDirPath = path.resolve(__dirname + '/' + newDirName); // 新的文件路徑 const filterFormatList = ['txt']; // 位移的文件后綴名 const notFilterNames = [newDirName, 'filterFile.js']; // 不進(jìn)行位移的文件 或者文件夾 或 文件格式 let moveFileCount = 0; // 位移文件總數(shù) let eachFileCount = 0; // 遍歷文件總數(shù) // 如果頁面中沒有 newFile 那么直接創(chuàng)建 if (!checkHasFile(rootRealPath, newDirName)) { console.log(`如果沒有${newDirName}文件夾 那么直接創(chuàng)建一個文件夾`); fs.mkdirSync(newDirName); } readDirSync(rootRealPath); console.log(`任務(wù)執(zhí)行完成 操作文件總數(shù)為: ${eachFileCount} 位移文件總數(shù)為: ${moveFileCount}`); function readDirSync(filePath) { const pa = fs.readdirSync(filePath); for (let i in pa) { let ele = pa[i]; let index = i; if (notFilterNames.indexOf(ele) !== -1) { // 如果是位移后目標(biāo)文件夾 則不進(jìn)行操作 break; } var info = fs.statSync(filePath + "/" + ele); // 判斷是文件夾 還是文件 if (info.isDirectory()) { // 遞歸遍歷所有文件夾, 將文件夾中的文件取出 readDirSync(filePath + "/" + ele); } else { var splitArea = ele.split('.'); var fileName = splitArea.slice(0, -1); // 不帶有格式的文件名 var fileFormat = splitArea.slice(-1); // 文件格式 eachFileCount++; if (filterFormatList.indexOf(splitArea[splitArea.length - 1]) !== -1) { moveFileCount++; if (checkHasFile(newDirPath, ele)) { fs.renameSync(path.resolve(`${filePath}/${ele}`), path.resolve(`${newDirPath}/${fileName}_${(new Date()).getTime()}.${fileFormat}`)); console.log('加時間戳 然后移動', ele); } else { console.log('沒有同名文件 直接移動', ele); fs.renameSync(path.resolve(filePath + "/" + ele), path.resolve(newDirPath + '/' + ele)); } } else { console.log('非 位移文件 不進(jìn)行位移'); } } } } } // 判斷目標(biāo)文件夾中是否有相同名稱的文件 function checkHasFile(filePath, file) { var pa = fs.readdirSync(filePath); if (!pa || pa.length === 0) { return false; } return (pa.indexOf(file) !== -1); }
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
node.js中優(yōu)雅的使用Socket.IO模塊的方法
Socket.IO是一個WebSocket庫,包括了客戶端的js和服務(wù)器端的node.js,它的目標(biāo)是構(gòu)建可以在不同瀏覽器和移動設(shè)備上使用的實時應(yīng)用,這篇文章主要介紹了node.js中優(yōu)雅的使用Socket.IO模塊,需要的朋友可以參考下2022-12-12配置node服務(wù)器并且鏈接微信公眾號接口配置步驟詳解
這篇文章主要介紹了配置node服務(wù)器并且鏈接微信公眾號接口配置步驟詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,,需要的朋友可以參考下2019-06-06Express下采用bcryptjs進(jìn)行密碼加密的方法
本篇文章主要介紹了Express下采用bcryptjs進(jìn)行密碼加密的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-02-02Node.js巧妙實現(xiàn)Web應(yīng)用代碼熱更新
本文給大家講解的是Node.js的代碼熱更新的問題,其主要實現(xiàn)原理 是怎么對 module 對象做處理,也就是手工監(jiān)聽文件修改, 然后清楚模塊緩存, 重新掛載模塊,思路清晰考慮細(xì)致, 雖然有點冗余代碼,但還是推薦給大家2015-10-10