在Node中使用文件夹

如何使用Node与文件夹交互

Node.jsfs核心模块提供了许多方便的方法,可用于处理文件夹。

检查文件夹是否存在

使用fs.access()检查文件夹是否存在,并且Node可以使用其权限访问它。

新建一个文件夹

使用fs.mkdir()或者fs.mkdirSync()创建一个新文件夹。

const fs = require('fs')

const folderName = ‘/Users/flavio/test’

try { if (!fs.existsSync(dir)){ fs.mkdirSync(dir) } } catch (err) { console.error(err) }

读取目录的内容

使用fs.readdir()或者fs.readdirSync读取目录的内容。

这段代码读取文件夹和文件以及子文件夹的内容,并返回它们的相对路径:

const fs = require('fs')
const path = require('path')

const folderPath = ‘/Users/flavio’

fs.readdirSync(folderPath)

您可以获取完整路径:

fs.readdirSync(folderPath).map(fileName => {
  return path.join(folderPath, fileName)
}

您还可以过滤结果以仅返回文件,并排除文件夹:

const isFile = fileName => {
  return fs.lstatSync(fileName).isFile()
}

fs.readdirSync(folderPath).map(fileName => { return path.join(folderPath, fileName) }).filter(isFile)

重命名文件夹

使用fs.rename()或者fs.renameSync()重命名文件夹。第一个参数是当前路径,第二个参数是新路径:

const fs = require('fs')

fs.rename(’/Users/flavio’, ‘/Users/roger’, err => { if (err) { console.error(err) return } //done })

fs.renameSync()是同步版本:

const fs = require('fs')

try { fs.renameSync(’/Users/flavio’, ‘/Users/roger’) } catch (err) { console.error(err) }

移除资料夹

使用fs.rmdir()或者fs.rmdirSync()删除文件夹。

删除包含内容的文件夹可能比您需要的复杂。

在这种情况下,我建议您安装fs-extra模块,该模块非常受欢迎且维护良好,是该模块的直接替代品fs模块,在其之上提供更多功能。

在这种情况下remove()方法就是你想要的。

使用安装

npm install fs-extra

并像这样使用它:

const fs = require('fs-extra')

const folder = ‘/Users/flavio’

fs.remove(folder, err => { console.error(err) })

它也可以与promises一起使用:

fs.remove(folder).then(() => {
  //done
}).catch(err => {
  console.error(err)
})

或使用async / await:

async function removeFolder(folder) {
  try {
    await fs.remove(folder)
    //done
  } catch (err) {
    console.error(err)
  }
}

const folder = ‘/Users/flavio’ removeFolder(folder)

免费下载我的Node.js手册


更多节点教程: