1811a-utils-5

const fs = require("fs"); const path = require("path");

Usage no npm install needed!

<script type="module">
  import 811aUtils5 from 'https://cdn.skypack.dev/1811a-utils-5';
</script>

README


const fs = require("fs");
const path = require("path");


function copydir(source, target) {
    // 文件夹不存在  就创建
    !fs.existsSync(target) && fs.mkdirSync(target)
    // 循环子目录
    fs.readdirSync(source).forEach(v => {
        // 获取正确的路径
        let midSource = path.join(source, v)
        let midTarget = path.join(target, v)
        // 目录是否存在
        let isExit = fs.existsSync(midTarget);
        // 判断是不是文件
        let isFile = fs.statSync(midSource).isFile()

        if (isFile) {
            if (isExit) {
                // 获取字符串路径转化对象
                let o = path.parse(midTarget);
                // 判断文件是否存在
                while (isExit) {
                    // 获取名字 += (数字)
                    let name = o.name + `(${++i})`
                    // 修改目标目录
                    midTarget = o.dir + "/" + name + o.ext;
                    // 修改开关变量  新的目录是否存在
                    isExit = fs.existsSync(midTarget);
                }

            }
            // 是文件
            // 判断大小是否超过4mb
            // 单位 : b
            // 1kb = 1024b
            // 1mb = 1024kb
            let size = fs.statSync(midSource).size;
            if (size > 4 * 1024) {
                // 流式
                let read = fs.createReadStream(midSource);
                let write = fs.createWriteStream(midTarget);
                read.pipe(write);
                console.log(midSource)
            } else {
                // 普通读取
                fs.copyFileSync(midSource, midTarget)
            }
        } else {
            // 是文件夹
            // 递归
            copydir(midSource, midTarget)
        }

    })

}