node基础 fs(文件系统模块)

node.js 引入fs模块

const fs = require('fs')

1. fs.stat() 检测是文件还是目录

语法格式:fs.stat(path, callback)

stat 参数说明:

  • 第一个path是文件路径
  • 第二个callback是回调函数,fs.stat(path)执行后,会将stats类的实例返回给其回调函数,例子中分别使用 isFile 和 isDirectory 来判断当前操作的是文件还是目录,取值为 true 和 false
const fs = require('fs')
//判断 ./test/text.txt 是文件还是目录
fs.stat('./test/text.txt', (err, dataStr) => {
    if (err) {
        return console.log('获取失败:'+ err.message)
    }
    console.log(`是文件:${dataStr.isFile()}`)
    console.log(`是目录:${dataStr.isDirectory()}`)
})

2. fs.writeFile 写入文件 (若该文件已存在则会覆盖该文件)

语法格式: fs.writeFile(file, data[, options], callback)

writeFile 参数说明:

  • file 文件名或文件描述符
  • data 要写入文件的数据,可以是 String(字符串) 或 Buffer(缓冲) 对象
  • options 是一个对象,包含以下参数
    • encoding(String | null) 默认值 utf8
    • mode 默认值 0666
    • flag 默认值 w
  • callback 回调函数,返回错误信息参数(err)
const fs = require('fs')
// 写入文件
fs.writeFile('./test/text.txt', 'hello', 'utf8', (err) => {
    if (err) {
        return console.log('写入错误:' + err.message)
    }
    console.log('写入成功');
})

3. fs.readFile 读取文件

语法格式: fs.readFile(path[, options], callback)

 readFile 参数说明:

  • path 文件的路径
  • options 是一个可选参数, 编码格式 一般默认utf8
  • callback 回调函数,返回读取失败(err)和成功(dataStr)的结果
const fs = require('fs')
// 读取文件
fs.readFile('./test/text.txt', 'utf8', (err, dataStr) => {
    if (err) {
        return console.log('读取错误:' + err.message)
    }
    console.log('读取成功:' + dataStr)
})

4. fs.mkdir 创建目录 (如果目录已存在,就会报错)

语法格式:fs.mkdir(path[, options], callback)

mkdir 参数说明:

  • file 文件路径
  • data 要写入文件的数据,可以是 String(字符串) 或 Buffer(缓冲) 对象
  • options 是一个对象,包含以下参数
    • recursive 是否以递归的方式创建目录,默认为 false
    • mode 设置目录权限,默认为 0777
  • callback 回调函数, 返回错误信息(err)
const fs = require('fs')
fs.mkdir('./test', (err) => {
    if (err) {
        return console.log('创建目录失败:' + err.message)
    }
    console.log('创建目录成功')
})

5. fs.readdir 读取目录

语法格式:fs.readdir(path, callback)

readdir 参数说明:

  • path 文件路径
  • callback 回调函数,回调函数带有两个参数err, files,err 为错误信息,files 为 目录下的文件数组列表
const fs = require('fs')
// 查看 ./test 目录
fs.readdir("./test", (err, files) => {
    if (err) {
        return console.log('读取目录失败:' + err.message)
    }
    console.log(files) // 返回的是一个数组 [ 'text.txt' ]
})

6. fs.rename 重命名 

语法格式:fs.rename(oldPath, newPath, callback)

rename参数说明:

  • oldPath 原文件路径及名称
  • newPath 新命名文件路径及名称
  • callback 回调函数,回调函数返回错误信息(err) 
const fs = require('fs')
// 重命名
fs.rename('./test/text.txt', './test/text1.txt', (err) => {
    if (err) {
       return console.log('重命名失败' + err.message)
    }
    console.log('重命名成功')
})

路径动态拼接的问题

在使用 fs 模块操作文件时,如果提供的操作路径是以./或../开头的相对路径时,很容易出现路径动态拼接错误的问题

原因:代码在运行的时候,会以执行node命令时所处的目录,动态拼接出被操作文件的完整路径。

解决方案:在使用 fs 模块操作文件时,直接提供完整的路径,不要提供./或../开头的相对路径,从而防止路径动态拼接错误的问题。

const fs = require('fs')

// 当前文件路径: D:\project\node\node_api\base\fs.js
// 在base目录下执行node .\fs.js 命令是不会报错的
// 如果我们将目录退一级如在node_api下执行node .\base\fs.js 就会报错
// 解决方案是提供一个完整的文件存放路径

//  __dirname 表示当前文件所在的目录
fs.readFile(__dirname + '/test/text.txt', 'utf8', (err, dataStr) => {
    if (err) {
        return console.log('读取错误:' + err.message)
    }
    console.log('读取成功:' + dataStr)
})

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

baimozi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值