美文网首页
js 递归读取目录下文件写入到另一个文件中

js 递归读取目录下文件写入到另一个文件中

作者: Martain | 来源:发表于2020-08-07 14:27 被阅读0次

    这几天因为公司某个软件需要申请软件著作,然而申请软件著作需要整理项目的源代码。一个一个文件复制黏贴太麻烦了,所以写了个脚本来搜集这些源码,之前写了一个python版的,被不知道弄哪去了。目前电脑里面有node环境就直接用node重新写了一版,这里记录下,也希望能帮到有需要的人。

    var path = require("path");
    var fs = require('fs'); 
    
    // 配置源码位置
    let prefix_path = "./"
    // 要读取的文件的格式
    let allow_file_ext = [".java"]
    // 源码保存文件的路径
    let write_file_name = "source_code4.txt"
    
    /**
     * 扫描路径下的文件
     * @param {*} _path 要扫描的路径
     */
    function scanFile(_path) { 
        fs.stat(_path,(err,data)=>{
            if (data.isDirectory()) {
                console.log("读取路径 "+_path);
                fs.readdir(_path,(err,paths)=>{
                    for (let index = 0; index < paths.length; index++) {
                        const m_path = paths[index];
                        let next_path = path.join(_path,m_path) 
                        scanFile(next_path)
                    }
                })
            }else{ 
                writeFile(_path)
            } 
        })
    }
    
    /**
     * 判断是否是目标文件
     * @param {*} _path 文件路径
     */
    function isTargetFile(_path) {
        let ext  =  path.extname(_path) 
        return allow_file_ext.includes(ext,0)
    }
    
    /**
     * 写入文件
     * @param {*} _path 文件路径
     */
    function writeFile(_path) {
       let need_write =  isTargetFile(_path) 
       if (need_write) {
        console.log("读取"+_path+" 中...");
        let file_name = path.basename(_path)
        let data = fs.readFileSync(_path,'utf-8')
        let _data = "\n"+file_name+"\n"+data
        fs.writeFileSync(write_file_name,_data,{flag:'a',encoding:'utf-8',mode:'0666'},err=>{
            if (err) {
                console.log("写入失败");
            }else{
                console.log(""+_path+" 写入完成");
            }
        })
       } 
    }
    
    /**
     * 开始扫描
     */
    scanFile(prefix_path)
    

    相关文章

      网友评论

          本文标题:js 递归读取目录下文件写入到另一个文件中

          本文链接:https://www.haomeiwen.com/subject/acpfdktx.html