Nodejs中的fs模块

news2025/9/20 15:34:34

一、文件写入操作

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.coloradmin.cn/o/411391.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MYSQL 2:一条更新语句是如何进行的

一. MYSQL的一条更新语句如何进行的? 和查询一样,一开始我们需要通过连接器连接到MYSQL服务器上,然后我们会将我们的语句交给解析器,然后交给执行器。比如我们执行一条这样的语句 update cc1 from user_info where id 2 1.执行…

PTA:C课程设计(5)

山东大学(威海)2022级大一下C习题集(5)函数题5-6-1 求一组数中的平均值及最大值5-6-2 判断满足条件的三位数5-6-3 函数实现字符串逆序5-6-4 查找子串5-6-5 计算最长的字符串长度5-6-6 二分查找编程题5-7-1 找最长的字符串5-7-2 藏…

第七天sql优化篇

一、查询SQL尽量不要使用select *,而是select具体字段 因为select * 进行查询时,很可能就不会使用到覆盖索引了,就会造成回表查询 select stu.name from student stu; 二、如果知道查询结果只有一条或者只要最大/最小一条记录&#xff…

CMMI认证唯一查询官网

CMMI是“能力成熟度模型集成”的意思。是一种评估或者认证制度。最新的CMMI V2.0模型有四个视图,DEV开发视图、SVC服务视图、供应商、人力资源,目前开发视图是全球应用最广泛的,主要是由CMMI研究院主任评估师按照CMMI模型检查企业或组织的软件…

HTML - 实现IE浏览器访问网址自动跳转至谷歌浏览器打开

HTML - 实现IE浏览器访问网址自动跳转至谷歌浏览器打开一. 实现代码二. IE浏览器设置一. 实现代码 注意:代码中的数据变量需要使用 var 声明 核心代码var href "http://www.baidu.com" //创建ActiveXObject实例,只在IE下有效,才可…

TensorFlow详解2原理

一、从helloworld开始 二、Tensorflow编程模式 一般有两种编程模式。 第一种是命令式编程–Torch, 第二种是符号式编程–Tensorflow; tensorflow比torch有相对的一定的优化; 命令式编程实际上是一种最常见的编程模式,因为易于理解而且基本没…

怎么压缩pdf,如何压缩pdf大小,4种高质量办法

怎么压缩pdf,如何压缩pdf大小,如何找到最合适、最高效的方法,是每一个人必须认真对待的问题。那么我们如何能提高工作效率呢?在办公中我们首先就是要先制定工作计划,心中有机会才能合理的安排工作时间,这样…

工业企业清洁运输台账存在的问题及应对措施

按照超低排放政策规定,企业要实现清洁运输超低排放改造,除了提高企业大宗物料和清洁方式运输比例外,同时还要建立清洁运输台账,根据台账等数据资料判断企业清洁运输比例是否满足要求。而目前对于大多数未完成超低排放的企业来说&a…

Nand Flash基础知识

1、Nand Flash组织架构 Device(Package)就是封装好的nand flash单元,包含了一个或者多个target。一个target包含了一个或者多个LUN,一个target的一个或者多个LUN共享一组数据信号。每个target都由一个ce引脚(片选&…

07-vue的组件化

文章目录1.概述存在的问题:那么如何解决这种状况:2.组件化1.基本概述2.优点1.概述 对于前端来说,我们为用户创造价值才是特别需要关注的一个问题,这么多年过去了,前端到底为用户创造了什么价值呢? 70 年代…

Nacos2.2版本Tomcat启动报错

Nacos2.2版本Tomcat启动报错 错误日志 查看 logs/start.out,可以看到报错信息 2023-04-09 19:36:23,081 ERROR Error starting Tomcat context. Exception: org.springframework.beans.factory.UnsatisfiedDependencyException. Message: Error creating bean wi…

Linux系统上如何禁用 USB 存储

Linux系统上如何禁用 USB 存储 为了保护数据不被泄漏,我们使用软件和硬件防火墙来限制外部未经授权的访问,但是数据泄露也可能发生在内部。 为了消除这种可能性,机构会限制和监测访问互联网,同时禁用 USB 存储设备。 我是艾西&…

手写一个Promise

Promise Promise是一个对象,用于解决异步变成的问题,由传统的异步回调为服务端立即调用优化为使用者者掌握回调主动权。 比如传统的JSONP,如下,在请求路由里添加回调函数,由接收请求的一方来调用请求,使用…

小白学Pytorch系列--Torch.nn API Vision Layers(15)

小白学Pytorch系列–Torch.nn API Vision Layers(15) 方法注释nn.PixelShuffle将形状张量(∗,Cr2,H,W)(*,C r^2,H,W)(∗,Cr2,H,W)中的元素重新排列为形状张量(∗,C,Hr,Wr)(*,C,H r,W r)(∗,C,Hr,Wr)&#x…

详细介绍React路由

路由 单页Web应用(single page web application,SPA),整个应用只有一个完整的页面,点击页面中的链接不会刷新页面,只会做页面的局部更新。数据都需要通过ajax请求获取, 并在前端异步展现。 一个路由就是一…

高通SDX12:ProSLIC Si32185移植调试

一、SLIC业务流程图 本次在高通SDX12平台上支持语音芯片Si32185大致流程如下: 驱动部分直接放在Kernel中,通过SPI注册设备创建字符节点,与硬件建立连接注册设备成功并在audio_kernel中正确配置FE、BE后,声卡会创建出来应用层直接放在apps_proc下,通过IOCTL操作驱动层,通…

操作系统、输入法和编码的理解

操作系统和输入法 操作系统有一个输入法管理器,叫做IMM,管理系统内的所有输入法,或者说一个输入法想要使用操作系统提供的输入法API,就必须在IMM进行注册。 应用程序和输入法 应用程序一般都会使用输入法,也就是调用输入法的api进行文字输…

Spring boot+Vue3博客平台:文章搜索与推荐和文章阅读统计模块

一、文章搜索与推荐功能 1.前端搜索功能实现 在文章列表组件中添加搜索框&#xff0c;用户可以输入关键字进行文章搜索。同时&#xff0c;在搜索结果下方展示相关文章推荐。 <template><div class"article-list"><div class"search">&…

手写vuex4源码(六)命名空间实现

一、命名空间使用 在子模块对象中添加 namespaced&#xff1a;true&#xff0c;为模块开启命名空间功能&#xff1b; 开启命名空间功能&#xff0c;相当于为每个模块添加独立的作用域&#xff0c;实现模块间状态和事件的隔离&#xff1b; 二、命名空间实现逻辑 在模块注册阶…

Vue3+Typescript+Vitest单元测试环境+组件测试基础篇

上一章我们把环境配置好了&#xff0c;并且进行了最简单的一个单元测试Vue3TypescriptVitest单元测试环境基础用例篇 现在让我们去编写一个最简单的组件 这个代码包含最简单的部分&#xff0c;就是一个按钮&#xff0c;接受一个内容插槽、自身有一个button样式 了解相关API…