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'; // 移动目标文件名
    const newDirPath = path.resolve(__dirname + '/' + newDirName); // 新的文件路径
    const filterFormatList = ['txt']; // 位移的文件后缀名
    const notFilterNames = [newDirName, 'filterFile.js']; // 不进行位移的文件 或者文件夹 或 文件格式
    let moveFileCount = 0; // 位移文件总数
    let eachFileCount = 0; // 遍历文件总数
 
    // 如果页面中没有 newFile 那么直接创建
    if (!checkHasFile(rootRealPath, newDirName)) {
        console.log(`如果没有${newDirName}文件夹 那么直接创建一个文件夹`);
        fs.mkdirSync(newDirName);
    }
    readDirSync(rootRealPath);
    console.log(`任务执行完成  操作文件总数为: ${eachFileCount} 位移文件总数为: ${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) { // 如果是位移后目标文件夹 则不进行操作
                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('非 位移文件 不进行位移');
                }
 
            }
        }
    }
 
}
 
// 判断目标文件夹中是否有相同名称的文件
function checkHasFile(filePath, file) {
    var pa = fs.readdirSync(filePath);
    if (!pa || pa.length === 0) {
        return false;
    }
    return (pa.indexOf(file) !== -1);
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • mac下的nodejs环境安装的步骤

    mac下的nodejs环境安装的步骤

    本篇文章主要介绍了mac下的nodejs环境安装的步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • node登录生成token并验证的实现

    node登录生成token并验证的实现

    token校验作为项目里的必要项,其重要性不言而喻,本文主要介绍了node登录生成token并验证的实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • 浅谈Node.js 中间件模式

    浅谈Node.js 中间件模式

    中间件在 Node.js 中被广泛使用,它泛指一种特定的设计模式、一系列的处理单元、过滤器和处理程序,以函数的形式存在,这篇文章主要介绍了浅谈Node.js 中间件模式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • Node.js实现兼容IE789的文件上传进度条

    Node.js实现兼容IE789的文件上传进度条

    这篇文章给大家介绍了如何实现兼容IE789的文件上传进度条,如果你的工作用过上传图片或上传大文件啥的,一般在IE低版本浏览器里,会切换到用flash解决,可是有些人肯定不会为了老旧IE的进度条而去学flash,那么下面来一起看看吧。
    2016-09-09
  • node删除、复制文件或文件夹示例代码

    node删除、复制文件或文件夹示例代码

    这篇文章主要给大家介绍了关于node删除、复制文件或文件夹的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用node具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-08-08
  • nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例

    nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例

    本篇文章主要介绍了nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例,有兴趣的可以了解一下。
    2016-12-12
  • node.js如何根据URL返回指定的图片详解

    node.js如何根据URL返回指定的图片详解

    这篇文章主要介绍了NODE.JS如何根据URL返回指定的图片详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • package.json版本号符号^和~前缀的区别

    package.json版本号符号^和~前缀的区别

    这篇文章介绍了package.json版本号符号^和~前缀的区别,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • 从零开始学习Node.js系列教程六:EventEmitter发送和接收事件的方法示例

    从零开始学习Node.js系列教程六:EventEmitter发送和接收事件的方法示例

    这篇文章主要介绍了Node.js EventEmitter发送和接收事件的方法,结合实例形式分析了EventEmitter发送和接收事件的原理、实现方法与相关操作技巧,需要的朋友可以参考下
    2017-04-04
  • node故障定位顶级技巧动态追踪Dynamic Trace详解

    node故障定位顶级技巧动态追踪Dynamic Trace详解

    这篇文章主要为大家介绍了node故障定位顶级技巧动态追踪Dynamic Trace详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09

最新评论