欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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搭建Vue項目的詳細(xì)步驟

    使用Node.js搭建Vue項目的詳細(xì)步驟

    Vue.js 是一款流行的 JavaScript 框架,而 Node.js 提供了一個強(qiáng)大的運(yùn)行環(huán)境,兩者的結(jié)合使得開發(fā)者可以輕松構(gòu)建現(xiàn)代化的前端項目,本文將介紹如何使用 Node.js 搭建一個基本的 Vue 項目,需要的朋友可以參考下
    2023-12-12
  • NodeJS配置HTTPS服務(wù)實例分享

    NodeJS配置HTTPS服務(wù)實例分享

    本文給大家分享的是在nodejs中配置https服務(wù)的方法和具體的示例,非常的詳細(xì),有需要的小伙伴可以來參考下
    2017-02-02
  • nodejs入門教程一:概念與用法簡介

    nodejs入門教程一:概念與用法簡介

    這篇文章主要介紹了nodejs入門教程之概念與用法,結(jié)合實例形式分析了nodejs基本概念、功能、命令與相關(guān)使用技巧,需要的朋友可以參考下
    2017-04-04
  • node.js中優(yōu)雅的使用Socket.IO模塊的方法

    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
  • npm的lock機(jī)制解析

    npm的lock機(jī)制解析

    這篇文章主要介紹了npm的lock機(jī)制解析,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-06-06
  • 配置node服務(wù)器并且鏈接微信公眾號接口配置步驟詳解

    配置node服務(wù)器并且鏈接微信公眾號接口配置步驟詳解

    這篇文章主要介紹了配置node服務(wù)器并且鏈接微信公眾號接口配置步驟詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,,需要的朋友可以參考下
    2019-06-06
  • array-uniq的安裝和使用方法

    array-uniq的安裝和使用方法

    array-uniq是一個非常實用的NPM包,用于在JavaScript中創(chuàng)建不含重復(fù)元素的數(shù)組,它提供了一個簡單而有效的方法來去除數(shù)組中的重復(fù)項,本文將介紹如何安裝和使用array-uniq來清理你的數(shù)組數(shù)據(jù),需要的朋友可以參考下
    2024-06-06
  • Express下采用bcryptjs進(jìn)行密碼加密的方法

    Express下采用bcryptjs進(jìn)行密碼加密的方法

    本篇文章主要介紹了Express下采用bcryptjs進(jìn)行密碼加密的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • 簡述pm2常用命令集合及配置文件說明

    簡述pm2常用命令集合及配置文件說明

    這篇文章主要介紹了簡述pm2常用命令集合及配置文件說明,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Node.js巧妙實現(xiàn)Web應(yīng)用代碼熱更新

    Node.js巧妙實現(xiàn)Web應(yīng)用代碼熱更新

    本文給大家講解的是Node.js的代碼熱更新的問題,其主要實現(xiàn)原理 是怎么對 module 對象做處理,也就是手工監(jiān)聽文件修改, 然后清楚模塊緩存, 重新掛載模塊,思路清晰考慮細(xì)致, 雖然有點冗余代碼,但還是推薦給大家
    2015-10-10

最新評論