极简 Node.js 入门 - 3.3 文件写入
2024-10-09 11:43:49
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node
看完文件读取再看文件写入非常简单,两者的操作几乎一一对应
fs.writeFile
fs.writeFile(file, data[, options], callback)
- file:文件名或文件描述符
- data:常用的主要是 string 和 buffer
- callback(err)
当 file
是文件名时,则异步地写入数据到文件,如果文件已存在,则覆盖文件内容
const fs = require('fs');
const data = Buffer.from('Hello, Node.js');
fs.writeFile('./test.txt', data, err => {
if (err) throw err;
console.log('文件已被保存');
});
fs.write
fs.write 有两种重载
- fs.write(fd, buffer[, offset[, length[, position]]], callback):参数含义和 fs.read 几乎相同
- fs.write(fd, string[, position[, encoding]], callback):只能把字符串内容全部写入文件
两个的区别就是适用 buffer 可以治写入 buffer 中 offset ~ length + offset
的内容,而使用字符串只能把字符串内容全部写入文件
const fs = require('fs');
const data1 = Buffer.from('Hello, Node.js');
const data2 = 'Hello, Node.js';
const fd = fs.openSync('./test.txt', 'w');
console.log(fd)
fs.write(fd, data1, err => {
if (err) throw err;
console.log('data1 已被写入');
});
fs.write(fd, data2, err => {
if (err) throw err;
console.log('data2 已被写入');
});
setTimeout(() => {
fs.close(fd, console.log);
}, 100);
fs.appendFile
fs.appendFile(path, data[, options], callback)
将数据追加到文件尾部,如果文件不存在则创建该文件
const fs = require('fs/promises');
const data1 = Buffer.from('Hello,');
const data2 = Buffer.from(' Node.js');
fs.appendFile('./test.txt', data1)
.then(() => {
fs.appendFile('./test.txt', data2);
console.log('文件内容追加完成');
});
fs.createWriteStream
fs.createWriteStream(path[, options])
用来创建一个可写的文件流,options 和 fs.createReadStream 几乎相同
options(比较常用的有)
- fd: 默认值 null,如果指定了 fd,则会忽略 path 参数,使用指定的文件描述符(不会再次触发 open 事件)
- mode:默认值 0o666
- autoClose: 默认值: true,当 'error' 或 'finish' 事件时,文件描述符会被自动地关闭
- start: 开始写入文件的位置,不设置默认覆盖
把一个可读流内容写到可写流非常简单
const fs = require('fs');
fs.createReadStream('./test.txt')
.pipe(fs.createWriteStream('./copy.txt'));
关于流的介绍和更多使用在 Buffer 和 Stream 章节会有详细介绍
最新文章
- 我将系统从Windows迁移至Linux下的点点滴滴
- (error) MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk
- uoj98未来程序改 纯暴力不要想了
- DTCMS插件的制作实例电子资源管理(二)Admin后台页面编写
- Android课程---关于对话框的学习
- 5.6 WebDriver API实例讲解(16-30)
- 带你深入了解Web站点数据库的分布存储
- 【JQuery】eval()出现missing after property id 错误。
- http://begin.lydsy.com/JudgeOnline/problem.php?id=2774(poi病毒)
- Java工具类之——BigDecimal运算封装(包含金额的计算方式)
- 查询优化--ORDER BY查询优化
- JAVA第一周学习
- BZOJ2946 [Poi2000]公共串(后缀自动机)
- Fastjson-fastjson中$ref对象重复引用问题
- 在eclipse中启动项目报java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: PermGen space
- Linux中安装绿色软件的方法
- Java并发编程73道面试题及答案 —— 面试稳了
- 应用DBExportDoc导出mysql库为word07文档
- 网页请求get方式
- 存储过程打印超过8000的VARCHAR字符的问题
热门文章
- 曹工说Spring Boot源码(30)-- ConfigurationClassPostProcessor 实在太硬核了,为了了解它,我可能debug了快一天
- Spring Date JPA实现增删改查
- API返回延迟,FPM重启后恢复之后又重现 问题解决方案
- 重置spyder 解决 gbk 编码不能读取问题
- Button基本用语
- PHP jddayofweek() 函数
- PHP cos() 函数
- loj #6039 「雅礼集训 2017 Day5」珠宝 分组背包 决策单调性优化
- JS 常用方法汇总(不定期更新)
- Jvm相关文章