极简 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 ... 
随机推荐
- JSONObject遍历
			导入JSONObject和JSONArray所需要的jar包 JSONObject所必需的6个jar包: commons-beanutils-1.7.0.jar commons-collections ... 
- 定义 WSGI 接口
			# WSGI服务器调用 def application(environ,start_response): start_response('200 OK',[('Content-Type','text/ ... 
- SELECT within SELECT Tutorial -- SQLZOO
			SELECT within SELECT Tutorial 注意:where语句中对表示条件的需要用单引号, 下面的译文使用的是有道翻译如有不正确,请直接投诉有道 01.List each count ... 
- Python os.pathconf() 方法
			概述 os.pathconf() 方法用于返回一个打开的文件的系统配置信息.高佣联盟 www.cgewang.com Unix 平台下可用. 语法 fpathconf()方法语法格式如下: os.fp ... 
- PHP strval() 函数
			strval() 函数用于获取变量的字符串值.高佣联盟 www.cgewang.com PHP 版本要求: PHP 4, PHP 5, PHP 7 语法 string strval ( mixed $ ... 
- PDO::inTransaction
			PDO::inTransaction — 检查是否在一个事务内(PHP 5 >= 5.3.3, Bundled pdo_pgsql) 说明 语法 bool PDO::inTransaction ... 
- 在新的线程中使用session 出现的问题
			Exception in thread "Thread-15" java.lang.IllegalStateException: No thread-bound request f ... 
- MySQL面试题!新鲜出炉~
			01.Mysql 的存储引擎,myisam和innodb的区别? 答:1.MyISAM 是非事务的存储引擎,适合用于频繁查询的应用.表锁,不会出现死锁,适合小数据,小并发. 2.innodb是支持事务 ... 
- VMware虚拟机磁盘收缩的几种方法
			原文地址:http://www.cnblogs.com/5201351/p/4290401.html 根据下面转载的内容,我在VMware 12.0.0 build-2985596的ubuntu上做试 ... 
- OpenCV之高斯平滑(Python实现)
			假设一个列数为W,行数为H的高斯卷计算子gaussKernel,其中W,H均为奇数,描点位置在((H-1)/2 ,(W-1)/2),构建高斯卷积核的步骤如下 1.计算高斯矩阵 \[gaussMatri ... 
