• nodejs jszip 压缩文件夹 过滤文件 递归文件夹 读取文件流


    原文地址:https://www.cnblogs.com/PigpigRun/p/10420074.html

    // 原文地址:https://www.cnblogs.com/PigpigRun/p/10420074.html
    // $ npm i jszip -S
    const fs = require('fs')
    const path = require('path')
    const JSZIP = require('jszip')
    
    // 排除部分文件或文件夹
    const exclude = name => !['.git', 'node_modules'].includes(name)
    
    // zip 递归读取文件夹下的文件流
    function readDir(zip, nowPath) {
        // 读取目录中的所有文件及文件夹(同步操作)
        let files = fs.readdirSync(nowPath) 
    
        //遍历检测目录中的文件
        files.filter(exclude).forEach((fileName, index) => {
            // 打印当前读取的文件名
            console.log(fileName, index) 
    
            // 当前文件的全路径
            let fillPath = path.join(nowPath, fileName)
    
            // 获取一个文件的属性
            let file = fs.statSync(fillPath) 
    
            // 如果是目录的话,继续查询
            if (file.isDirectory()) {
                // 压缩对象中生成该目录
                let dirlist = zip.folder(fileName) 
                // (递归)重新检索目录文件
                readDir(dirlist, fillPath) 
            } else {
                // 压缩目录添加文件
                zip.file(fileName, fs.readFileSync(fillPath)) 
            }
        })
    }
    
    // 开始压缩文件
    function zipFolder({ target = __dirname, output = __dirname + '/result.zip' }) {
        // 创建 zip 实例
        const zip = new JSZIP()
    
        // zip 递归读取文件夹下的文件流
        readDir(zip, target)
    
        // 设置压缩格式,开始打包
        zip.generateAsync({
            // nodejs 专用
            type: 'nodebuffer', 
            // 压缩算法
            compression: 'DEFLATE', 
            // 压缩级别
            compressionOptions: { level: 9, },
        }).then(content => {
            // 将打包的内容写入 当前目录下的 result.zip中
            fs.writeFileSync(output, content, 'utf-8') 
        })
    }
    
    zipFolder({ 
        // 目标文件夹
        target: path.join(__dirname, 'test'), 
        // 输出 zip 
        output: __dirname + '/result.zip' 
    })
  • 相关阅读:
    分布式训练基本原理
    服务化部署框架Paddle Serving
    Paddle Inference原生推理库
    源码编译优化
    推理部署概述
    深度学习模型组网
    在这里
    什么是响应式编程,为什么使用它?
    时间管理:如何充分利用你的24小时-吉姆·兰德尔.pdf
    Win10激活工具
  • 原文地址:https://www.cnblogs.com/CyLee/p/15635095.html
Copyright © 2020-2023  润新知