最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nodejs如何將多個(gè)目錄文件合并成一個(gè)

 更新時(shí)間:2023年10月27日 09:20:16   作者:不吃魚(yú)的貓咪  
這篇文章主要介紹了nodejs如何將多個(gè)目錄文件合并成一個(gè)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

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ù)器中的文件、圖片上傳的方法

    這篇文章主要介紹了Node.js HTTP服務(wù)器中的文件、圖片上傳的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • nodejs微信掃碼支付功能實(shí)現(xiàn)

    nodejs微信掃碼支付功能實(shí)現(xiàn)

    本片文章通過(guò)代碼示例給大家詳細(xì)講述了如何用nodejs寫(xiě)出微信掃碼支付這個(gè)功能,有興趣的朋友可以參考下。
    2018-02-02
  • node.js下LDAP查詢(xún)實(shí)例分享

    node.js下LDAP查詢(xún)實(shí)例分享

    這篇文章主要介紹了node.js下LDAP查詢(xún)實(shí)例分享的相關(guān)資料,需要的朋友可以參考下
    2015-09-09
  • 從零開(kāi)始學(xué)習(xí)Node.js系列教程三:圖片上傳和顯示方法示例

    從零開(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í)例

    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功能示例

    這篇文章主要介紹了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ò)的解決方案

    這篇文章主要介紹了基于npm?install或run時(shí)一些報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Sequelize中用group by進(jìn)行分組聚合查詢(xún)

    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模塊Buffer原理及使用方法解析

    NodeJS模塊Buffer原理及使用方法解析

    這篇文章主要介紹了NodeJS模塊Buffer原理及使用方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 在NodeJS中啟用ECMAScript 6小結(jié)(windos以及Linux)

    在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

最新評(píng)論

永顺县| 若羌县| 岫岩| 德钦县| 兴文县| 景泰县| 安泽县| 湄潭县| 乡城县| 札达县| 会泽县| 天水市| 全州县| 奉新县| 孝义市| 错那县| 乐山市| 乐昌市| 宝丰县| 德化县| 军事| 丰台区| 阜新市| 大石桥市| 柘城县| 普宁市| 东平县| 栾川县| 正宁县| 济源市| 汉阴县| 金溪县| 古蔺县| 大关县| 阜南县| 房产| 师宗县| 鸡西市| 彝良县| 永和县| 浠水县|