当前位置: 首页 > article >正文

Nodejs中的fs模块

一、文件写入操作

writeFile 直接打开文件默认是 w 模式,所以如果文件存在,该方法写入的内容会覆盖旧的文件内容

语法:

writeFile(file, data[, options], callback)异步
writeFileSync(file, data)同步

参数:

file文件名
data要写入文件的数据
options该参数是一个对象,包含 {encoding, mode, flag}。默认编码为 utf8, 模式为 0666 , flag 为 ‘w’
callback回调函数,回调函数只包含错误信息参数(err),在写入失败时返回。

代码:

// 1、导入fs模块
const fs = require('fs')
// 2、异步写入文件
fs.writeFile('./xxx.txt', '三人行, 则必有我师焉', err => {
    // err写入失败: 错误对象   写入成功: null
    if(err) {
        console.log('写入失败')
        return
    }
    console.log('写入成功')
})

// 2、同步写入文件
fs.writeFileSync('./data.txt', 'text')

二、追加写入

方式一、

语法:

appendFile(file, data, option, callback)同步
appendFileSync(file, data)异步

参数:

       

file追加的文件
data追加的内容
option该参数是一个对象,包含 {encoding, mode, flag}。默认编码为 utf8, 模式为 0666 , flag 为 ‘w’
callback操作后的回调

代码:

const fs = require('fs')


// 1、异步追加
fs.appendFile('./xxx.txt', '你说嘴巴嘟嘟,还是狗吧狗狗', err => {
    // 判断
    if(err) {
        console.log('写入失败~~')
        return
    }
    console.log('写入成功~~')
})


// 同步追加
fs.appendFileSync('./xxx.txt', '你说嘴巴嘟嘟,还是狗吧狗狗')

 方式二、

代码:

const fs = require('fs')

fs.writeFile('./xxx.txt', '你说嘴巴嘟嘟,还是狗吧狗狗', {flag: 'a'}, err => {
    // 判断
    if(err) {
        console.log('写入失败~~')
        return
    }
    console.log('写入成功~~')
})

三、文件流式写入

代码:

// 1、导入fs
const fs = require('fs')

// 2、创建写入流对象
const ws = fs.createWriteStream('./观书后感.txt')

// 3、write
ws.write('半亩方塘一鉴开\r\n')
ws.write('天光云影共徘徊\r\n')
ws.write('问渠那得清如许\r\n')
ws.write('为有源头活水来\r\n')

// 关闭通道
ws.close();

四、文件读取

方法说明
readFile异步读取
readFileSync同步读取
createReadStream流式读取

代码:

// 1. fs模块
const fs = require('fs')


// 2. 异步读取
fs.readFile('./观书后感.txt', (err, data) => {
    if(err) {
        console.log('读取失败~~')
        return
    }
    console.log('读取成功~~', data.toString())
})


// 3. 同步读取
let data = fs.readFileSync('./观书后感.txt');
console.log(data.toString())


// 4. 流式读取
const rs = fs.createReadStream('./data.txt')  // 创建读取流对象

rs.on('data', res => {  // 绑定data事件
    console.log(res)
})

rs.on('end', () => {
    console.log('读取完成')
})

 效果:

五、文件的复制

代码:

// 导入fs模块
const fs = require('fs')

// 方式一
// 1、读取文件
let data = fs.readFileSync('./data.txt')
// 2、写入文件
fs.writeFileSync('./data2.txt', data);


//方式二 流式操作(推荐使用)
// 1、创建读取流对象
const rs = fs.createReadStream('./data.txt')
// 2、创建写入流对象
const ws = fs.createWriteStream('./data3.txt')
// 3. 绑定data事件
rs.on('data', chunk => {
    ws.write(chunk)
})

六、文件移动、重命名

语法:

rename(oldPath, newPath, callback)同步
renameSync(oldPath, newPath)异步

参数:

oldPath文件当前的路径
newPath新文件的路径
callback操作后的回调

代码:

const fs = require('fs')

// 修改名字
fs.rename('./data.txt', './new_data.txt', err => {
    if(err) {
        console.log('操作失败~~')
        return
    }
    console.log('操作成功')
})

// 移动
fs.rename('./data2.txt', './data/new_data.txt', err => {
    if(err) {
        console.log('操作失败~~')
        return
    }
    console.log('操作成功')
})

七、文件删除

语法:

unlink(path, callback)异步
unlinkSync同步
rm(path, callback)14.4版本

参数:

path文件路径
callback操作后的回调

代码:

const fs = require('fs')

fs.unlink('data3.txt', err => {
    if(err) {
        console.log('删除失败')
        return
    }
    console.log('删除成功')
})

八、文件夹操作

1、创建

语法:

mkdir(path, options, callback)异步
mkdirSync(path, options)同步

参数:

path文件路径
options选项配置
callback操作后的回调

代码:

const fs = require('fs')

// 1、创建单个文件夹 
fs.mkdir('./html', err => {
    if(err) {
        console.log('创建失败~~')
        return
    }
    console.log("创建成功~~")
})

// 2、创建递归文件夹
fs.mkdir('./a/b/c', {recursive: true}, err => {  // 需要添加{recursive: true} 参数
    if(err) {
        console.log('创建失败~~')
        return
    }
    console.log("创建成功~~")
})

2、读取

语法:

readdir(path, callback)读取文件夹

参数:

path读取的文件夹
callback操作后的回调

代码:

const fs = require('fs')
fs.readdir('./data', (err, data) => {
    if(err) {
        console.log('读取失败')
        return
    }
    console.log(data);
})

3、删除

语法:

rmdir(path, option, callback)不推荐使用
rm(path, option, callback)推荐使用

参数:

path路径
option其他参数
callback操作后回调

.0

代码:

const fs = require('fs')
// 删除
fs.rmdir('./html', err => {
    if(err) {
        console.log("删除失败")
        return
    }
    console.log("删除成功")
})

// 递归删除   删除a/b/c
fs.rmdir('./a', {recursive: true}, err => {
    if(err) {
        console.log("删除失败")
        return
    }
    console.log("删除成功")
})


// 推荐使用
fs.rm('./a', {recursive: true}, err => {
    if(err) {
        console.log("删除失败")
        return
    }
    console.log("删除成功")
})

 


http://www.kler.cn/a/10085.html

相关文章:

  • mac终端使用pytest执行iOS UI自动化测试方法
  • 【CSS】“flex: 1“有什么用?
  • 【Android、IOS、Flutter、鸿蒙、ReactNative 】约束布局
  • 案例精选 | 河北省某检察院安全运营中异构日志数据融合的实践探索
  • ES6模块、CommonJS、AMD等不同的模块化实现。
  • 【大数据学习 | HBASE】hbase的读数据流程与hbase读取数据
  • 前脚我的 GPT4 被封,后脚收到了文心一言的邀请账号
  • Java阶段一Day20
  • Linux网络虚拟化2
  • SpringBoot使用Freemarker导出word模板(OpenXML)
  • Spring boot+Vue3博客平台:文章搜索与推荐和文章阅读统计模块
  • HTML - 实现IE浏览器访问网址自动跳转至谷歌浏览器打开
  • 电脑重装了系统开不了机怎么办?
  • 嵌入式入门基础知识有哪些?
  • pytorch张量及其使用——初学者入门必看
  • kruskal重构树
  • 商品列表API接入文档和参数说明
  • Python if 语句、Python3 os.rmdir() 方法
  • angular/react/vue/un-app
  • 全国青少年信息素养大赛2023年python·选做题模拟三卷
  • Android NDK 开发Demo
  • mysql数据库审计(1)
  • Cadence Allegro 导出Unassigned Functions Report报告详解
  • 有符号加法运算
  • 【C++】结构体嵌套结构体
  • 包装类,String,String的方法