nodejs如何將多個(gè)目錄文件合并成一個(gè)
nodejs多個(gè)目錄文件合并成一個(gè)
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將不同文件夾中的視頻整合到一個(gè)文件夾中
const fs = require("fs")
const path = require("path")
main();
function main() {
const rootRealPath = path.resolve(__dirname);
const newDirName = 'newFile'; // 移動(dòng)目標(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ù)
// 如果頁(yè)面中沒(méi)有 newFile 那么直接創(chuàng)建
if (!checkHasFile(rootRealPath, newDirName)) {
console.log(`如果沒(méi)有${newDirName}文件夾 那么直接創(chuàng)建一個(gè)文件夾`);
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('加時(shí)間戳 然后移動(dòng)', ele);
} else {
console.log('沒(méi)有同名文件 直接移動(dòng)', ele);
fs.renameSync(path.resolve(filePath + "/" + ele), path.resolve(newDirPath + '/' + ele));
}
} else {
console.log('非 位移文件 不進(jìn)行位移');
}
}
}
}
}
// 判斷目標(biāo)文件夾中是否有相同名稱(chēng)的文件
function checkHasFile(filePath, file) {
var pa = fs.readdirSync(filePath);
if (!pa || pa.length === 0) {
return false;
}
return (pa.indexOf(file) !== -1);
}總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Node.js HTTP服務(wù)器中的文件、圖片上傳的方法
這篇文章主要介紹了Node.js HTTP服務(wù)器中的文件、圖片上傳的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
從零開(kāi)始學(xué)習(xí)Node.js系列教程三:圖片上傳和顯示方法示例
這篇文章主要介紹了Node.js圖片上傳和顯示方法,結(jié)合實(shí)例形式分析了nodejs基于http傳輸圖片文件及顯示圖片的相關(guān)實(shí)現(xiàn)步驟與操作技巧,需要的朋友可以參考下2017-04-04
Node.js 實(shí)現(xiàn)簡(jiǎn)單小說(shuō)爬蟲(chóng)實(shí)例
現(xiàn)在爬蟲(chóng)在很多web項(xiàng)目中都有應(yīng)用,這篇文章主要介紹了Node.js 實(shí)現(xiàn)簡(jiǎn)單小說(shuō)爬蟲(chóng)實(shí)例,有興趣的可以了解一下。2016-11-11
NodeJS簡(jiǎn)單實(shí)現(xiàn)WebSocket功能示例
這篇文章主要介紹了NodeJS簡(jiǎn)單實(shí)現(xiàn)WebSocket功能,結(jié)合具體實(shí)例形式分析了nodejs實(shí)現(xiàn)WebSocket通信功能的客戶(hù)端與服務(wù)器端相關(guān)操作技巧,需要的朋友可以參考下2018-02-02
基于npm?install或run時(shí)一些報(bào)錯(cuò)的解決方案
這篇文章主要介紹了基于npm?install或run時(shí)一些報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06
Sequelize中用group by進(jìn)行分組聚合查詢(xún)
大家都知道在SQL查詢(xún)中,分組查詢(xún)是較常用的一種查詢(xún)方式。分組查詢(xún)是指通過(guò)GROUP BY關(guān)鍵字,將查詢(xún)結(jié)果按照一個(gè)或多個(gè)字段進(jìn)行分組,分組時(shí)字段值相同的會(huì)被分為一組。在Node.js基于Sequelize的ORM框架中,同樣支持分組查詢(xún),使用非常簡(jiǎn)單方便。下面來(lái)看看詳細(xì)的介紹。2016-12-12
在NodeJS中啟用ECMAScript 6小結(jié)(windos以及Linux)
ECMAScript 6 是JavaScript的下一代標(biāo)準(zhǔn),其目標(biāo),是使得JavaScript可以用來(lái)編寫(xiě)復(fù)雜的應(yīng)用程序、函數(shù)庫(kù)和代碼的自動(dòng)生成器(code generator)。2014-07-07

