极简 Node.js 入门 - 3.3 文件写入
极简 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 章节会有详细介绍
极简 Node.js 入门 - 3.3 文件写入的更多相关文章
- 极简 Node.js 入门 - 3.2 文件读取
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
- 极简 Node.js 入门 - 3.4 文件夹写入
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
- 极简 Node.js 入门 - 3.5 文件夹操作
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
- 极简 Node.js 入门 - 1.2 模块系统
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
- 极简 Node.js 入门 - 1.3 调试
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
- 极简 Node.js 入门 - 1.4 NPM & package.json
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
- 极简 Node.js 入门 - 2.1 Path
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
- 极简 Node.js 入门 - 2.3 process
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
- 极简 Node.js 入门 - 2.4 定时器
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
随机推荐
- Java数组(基本+内存分析)
一.数组概念 数组即为多个相同数据类型数据的数据按一定顺序排列的集合. 二.数组的特点 1.数组有数组名.索引.元素.素组长度: 2.数组的元素可以是基本数据类型也可以是引用数据类型: ...
- 如何利用tox打造自动自动化测试框架,看完就懂
什么是toxtox官方文档的第一句话 standardize testing in Python,意思就是说标准化python中的测试,那是不是很适合测试人员来使用呢,我们来看看他究竟是什么? 根据官 ...
- spring 循环依赖的一次 理解
前言: 在看spring 循环依赖的问题中,知道原理,网上一堆的资料有讲原理. 但今天在看代码过程中,又产生了疑问. 疑问点如下: // 疑问点: 先进行 dependon 判断String[] de ...
- Python修改元组
Python修改元组:元组中的元素值是不允许修改的,当创建好的时候就是固定不变的.所谓的修改其实是指创建一个新的元组,只是该元组可能是比原来的元组多一个元素或者少一个元素,然后使用新创建好的元组代替原 ...
- 美团Leaf——全局序列生成器
Leaf的Github地址: https://github.com/Meituan-Dianping/Leaf Leaf美团技术团队博客地址: https://tech.meituan.com/201 ...
- Python os.fdopen() 方法
概述 os.fdopen() 方法用于通过文件描述符 fd 创建一个文件对象,并返回这个文件对象.高佣联盟 www.cgewang.com Unix, Windows上可用. 语法 fdopen()方 ...
- PHP is_callable() 函数
is_callable() 函数用于检测函数在当前环境中是否可调用.高佣联盟 www.cgewang.com is_callable() 函数验证变量的内容能否作为函数调用. 这可以检查包含有效函数名 ...
- PHP imagecharup - 垂直地画一个字符
imagecharup — 垂直地画一个字符.高佣联盟 www.cgewang.com 语法 bool imagecharup ( resource $image , int $font , int ...
- C/C++编程笔记:C语言入门知识点(二),请收藏C语言最全笔记!
今天我们继续来学习C语言的入门知识点 11. 作用域规则 任何一种编程中,作用域是程序中定义的变量所存在的区域,超过该区域变量就不能被访问.C 语言中有三个地方可以声明变量: 在函数或块内部的局部变量 ...
- luogu P5667 拉格朗日插值2 拉格朗日插值 多项式多点求值 NTT
LINK:P5667 拉格朗日插值2 给出了n个连续的取值的自变量的点值 求 f(m+1),f(m+2),...f(m+n). 如果我们直接把f这个函数给插值出来就变成了了多项式多点求值 这个难度好像 ...