node_fs模块常用API

fs模块 说明

  • 在Node.js中,使用fs模块来实现所有有关文件及目录的创建、写入及删除操作。
  • 在fs模块中,所有的方法都分为同步和异步两种实现。
  • 具有sync后缀的方法为同步方法,不具有sync后缀的方法为异步方法。
  • 异步方法一般最后一个参数都为callback;同步则直接返回。

Node 遵循错误优先回调

  • 回调函数的第一个参数,必须是错误对象error 如果有错误发生,错误将通过第一个参数error返回;
  • 第二个参数作为成功响应的数据,如果没有异常,error会被设为null

常用API

创建

fs.writeFile
// 异步 / 同步
// fs.writeFile
// 若存在该文件,则会覆盖原有数据,若该文件不存在,则会创建该文件,但不能创建文件夹
fs.writeFile('./index.txt', '只要心中花千树,', err => {
    if (err)
        console.log(err)
})
fs.writeFileSync('./index2.txt', '执子之手,')

fs.appendFile
// fs.appendFile
// 若该文件不存在,则会创建该文件写入内容,若存在,则在尾部追加内容
fs.appendFile('./index.txt', '人生何处不逢春', err => {
    if (err)
        console.log(err)
})
fs.appendFileSync('./index2.txt', '与子偕老')

fs.mkdir

// fs.mkdir
// 创建文件夹,若文件不存在就创建该文件,若存在就报错
fs.mkdir('./dir', err => {
    if (err)
        console.log(err)
})
fs.mkdirSync('./dir2')

fs.rm
// fs.rm
// 存在这样的文件,删除成功,若不存在则会报错
fs.rm('./test.txt', err => {
    if (err)
        console.log(err)
})
fs.rmSync('./test.txt')


fs.rmdir

// fs.rmdir
// 存在这样的文件jia,删除成功,若不存在则会报错
fs.rmdir('./test', err => {
    if (err)
        console.log(err)
})
fs.rmdirSync('./dir')

修改

fs.rename

// fs.rename
// 修改文件名,可以当做移动文件使用
fs.rename('../test.txt', './test123.txt', err => {
    if (err)
        console.log(err)
})
fs.renameSync('./test123.txt', './test.txt')

查找

fs.exists

// fs.exists
// 判断指定路径文件或目录是否存在,返回值为Boolean
fs.exists('./index.ts', (err) => {
    if (err)
        console.log(err)
})
console.log(fs.existsSync('./index.js'))

fs.readdir

// fs.readdir
// 获取指定路径下的所有文件/文件夹名
// withFileTypes可判断类型 { name: '.idea', path: '../', [Symbol(type)]: 2 }
fs.readdir('../', {withFileTypes: true}, (err, data) => {
    if (err)
        return console.log(err)
    console.log(data)
})
console.log(fs.readdirSync('../'));


fs.readFile

// fs.readFile
// 读取文件,第二个参数设置编码格式,默认为二进制流buffer
fs.readFile('./index.js', 'utf-8', (err, data) => {
    if (err)
        console.log(err)
    console.log(data)
})
console.log(fs.readFileSync('./index.js', 'utf-8'));

其他

fs.copyFile

// fs.copyFile
// 如果目标文件已经存在,则会覆盖目标文件
// 异步
fs.copyFile('../index.html', './index.html', (err) => {
    if (err)
        console.log(err)
})
// 同步
fs.copyFileSync('../index.html', './index.html')


fs.stat

// fs.stat
fs.stat('./', (err, stats) => {
    if (err)
        console.log(err)
    console.log(stats.isDirectory())
})
console.log(fs.statSync('./').isDirectory());