nodejs读取两层结果文件读取指定文件复制到指定文件夹

206 阅读1分钟

最近买了点字体,但是坑爹的是,字体套在两层文件夹里,要看某个字体需要一个一个点开再返回看。非常麻烦,因此可以用nodejs把所有的otf或者ttf文件全部拿出来整合到一个文件夹里。

文件结构:

image.png

其中脚本文件与all-zitiziti文件夹同级。只要装了node,建一个js文件直接运行即可。

代码非常简单,记录一下,以后要用到拿来用一下:

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

var destPath = "all-ziti"
let sourceFile = ""

const FILEPATH = "ziti" // 所有字体文件

const res = fs.readdirSync(FILEPATH)

for (let fn of res) {
  const path = `${FILEPATH}/${fn}` // 包含字体文件夹的父文件夹路径
  const res1 = fs.readdirSync(path)
  console.log("path1", path)

  // 遍历2
  for (let zn of res1) {
    const path2 = `${FILEPATH}/${fn}/${zn}` // 字体文件夹
    // console.log("path2", path2)
    const res2 = fs.readdirSync(path2)
    const otf = res2.filter((e) => {
      return e.indexOf(".otf") >= 0 || e.indexOf(".ttf") >= 0
    })[0]
    sourceFile = path2 + "/" + otf // 这里需要指明具体写入的文件夹+文件名

    /* 将当前otf/ttf字体文件复制到all-ziti文件夹 */
    var readStream = fs.createReadStream(sourceFile)
    var writeStream = fs.createWriteStream(`${destPath}/${otf}`)

    readStream.pipe(writeStream)
  }
}