utils-1903a-all

包含删除文件夹 复制文件夹 文件夹转化json jso转化文件夹操作

Usage no npm install needed!

<script type="module">
  import utils1903aAll from 'https://cdn.skypack.dev/utils-1903a-all';
</script>

README

删除文件

// 封装函数 
// 删除非空文件夹
function removeDir(dir) {
  // 清空文件夹
  // 需要删除子目录
  // 读取子目录
  let arr = fs.readdirSync(dir)
  // 循环遍历子目录
  arr.forEach(v => {
    // v 现在代表的是 子目录
    // 需要获取正确的目录
    // 拼接正确目录
    v = dir + "/" + v
    // 获取子目录信息
    let info = fs.statSync(v)
    // 判断是文件还是文件夹
    if (info.isFile()) {
      // 是文件
      fs.unlinkSync(v)
    } else {
      // 是文件夹
      // 递归
      removeDir(v)
    }
  })

  // 删除文件夹
  fs.rmdirSync(dir)
}


复制文件

function copyDir(src, dest, size = 4 * 1024 * 1024) {
  //  不存在就创建
  !fs.existsSync(dest) && fs.mkdirSync(dest)
  //  循环资子目录
  fs.readdirSync(src).forEach(pathname => {
    // 拼接路径
    let midSrc = path.join(src, pathname)
    let midDest = path.join(dest, pathname)
    // 获取路径信息
    let info = fs.statSync(midSrc)
    // 判断是不是文件
    if (info.isFile()) {
      // 是文件
      // 判断是不是大文件
      // info.size  单位是 b
      // 1mb = 1kb * 1024 = 1b * 1024 * 1024
      // 4mb 算大文件
      if (info.size > size) {
        // 创建读取流
        let read = fs.createReadStream(midSrc)
        // 创建写入流
        let write = fs.createWriteStream(midDest)
        // 链接管道
        read.pipe(write)
        console.log('复制大文件' + '文件名字' + pathname);
      } else {
        // 小文件直接 复制
        fs.copyFileSync(midSrc, midDest)
      }
      // 打印每一个名字 和大小 
      console.log('当前文件' + pathname + '文件大小' + info.size);
    } else {
      // 是文件夹
      //递归
      copyDir(midSrc, midDest, size)
    }
  })

}

文件转化json

function dirToJSON(dirname) {
  // 读取目录信息
  const info = fs.statSync(dirname);
  // 文件
  // 判断是不是文件
  if (info.isFile()) {

    return {
      // 路径
      pathname: dirname,
      // 类型
      type: 'file',
      // 扩展名
      ext: path.extname(dirname),
      // 大小
      size: info.size,
      // 内容
      content: fs.readFileSync(dirname, 'utf8')
    }
    // 文件夹
  } else {
    return {
      // 目录
      pathname: dirname,
      // 类型
      type: 'dir',
      // 子目录
      children: fs.readdirSync(dirname).map(v => {
        // 拼接路径
        v = path.join(dirname, v)
        // 递归
        return dirToJSON(v)
      })
    }
  }
}

json转化文件


function JSONToDir(data) {
  // 判断是文件夹
  if (data.type === "dir") {
    // 创建文件夹
    fs.mkdirSync(data.pathname);
    // 循环子目录  递归
    data.children.forEach(v => JSONToDir(v))
    // 是文件
  } else if (data.type === "file") {
    // 写入文件
    fs.writeFileSync(data.pathname, data.content)
  }
}